Auf welcher Ebene (Model, View, Controller) von MVC sollte die Berechtigungslogik behandelt werden?Als Teil welcher Ebene sollten Berechtigungen in MVC angewendet werden?
Lassen Sie mich das ein wenig klären. Offensichtlich muss die Benutzeroberfläche (Ansicht und Controller) Zugriff auf Berechtigungen zum Anzeigen/Verbergen von Komponenten und zum Behandeln des Szenarios mit verweigerter Berechtigung haben. Es scheint auch offensichtlich, dass die Berechtigungen von der Model-Ebene in der Datenbank beibehalten werden sollten.
Aber was ist mit "komplexen" Berechtigungsregeln wie diesem?
In einem Wiki/CMS-System, das ich entwickle, hat jeder Benutzer eine Reihe von Berechtigungen pro Seite (Anzeigen, Bearbeiten, Umbenennen usw.). Bei vorhandenen Seiten werden diese Berechtigungen von der Datenbank abgerufen. Für eine neue Seite wird angenommen, dass der Benutzer alle möglichen Berechtigungen hat (während er sie erstellt/bearbeitet).
Ein anderes Beispiel wäre die Liste der Seiten:
Der aktuelle Benutzer sollte nur in der Seitenliste Seiten sehen können, für die er eine Anzeigeberechtigung hat.
Soll der Controller diese Logik verarbeiten? Oder sollte der Controller nur für das Aufrufen einer GetPermissions() -Methode (oder GetPageList) verantwortlich sein und die gesamte Logik zum Auffüllen des Modells im Modell behandelt werden?