5 Stimmen

Wo ist in MVC der richtige Ort, um den Autorisierungscode zu platzieren?

Wo ist in MVC der richtige Ort, um den Autorisierungscode zu platzieren?
Der Kontrolleur?
Das Modell?
In der Ansicht?

Überall auf der Welt?

3voto

tvanfosson Punkte 506878

Ich stimme dafür, sie dort zu platzieren, wo sie sinnvoll ist. Die meisten meiner Autorisierung Zeug wird über die Dekoration von Controller-Aktionen (oder sogar einige Controller) mit dem AuthorizeAttribute behandelt - oder ein Attribut davon abgeleitet. In einigen wenigen Fällen - wie z.B. bei meinen Menüs - habe ich darauf zurückgegriffen, die Autorisierungsprüfung in den View-Code selbst zu setzen, anstatt sie in jedem Controller zu berechnen und Flags in ViewData weiterzugeben. Es gibt ein paar Fälle, in denen bestimmte Aspekte des Modells nur für bestimmte Rollen verfügbar sind, und in diesen Fällen habe ich auf die Erweiterung des Modells mit Methoden zurückgegriffen, die den aktuellen Benutzer und die Rollen annehmen und die Prüfung dort durchführen können.

1voto

duffymo Punkte 298898

Ich denke, die Genehmigung ist ein bereichsübergreifendes Anliegen. Sie sollte an einer Stelle stehen - ein Aspekt, der deklarativ angewendet werden kann, wenn er benötigt wird.

1voto

Craig Warren Punkte 1645

Der Controller!

Ihre Ansicht sollte nur die Benutzeroberfläche und die Anzeige behandeln Ihr Modell sollte die Daten in Ihrem System darstellen. Ihr Controller sollte die Logik der Funktionsweise des Systems verwalten.

Bei der Autorisierung eines Benutzers werden die von der Ansicht bereitgestellten Anmeldeinformationen mit einer Art Autorisierungsliste im Modell abgeglichen und dann eine Prüfung durchgeführt.

Dies geschieht im Controller: Benutzeranmeldeinformationen aus der Ansicht abrufen if(Vergleich mit Benutzerliste im Modell ergibt Übereinstimmung) Benutzer autorisieren sonst Zugriff verweigern

0voto

Gregory A Beamer Punkte 16670

Wenn Sie zwischen M, V oder c wählen müssen, ist das C der richtige Platz. Ich empfehle jedoch eine Architektur, bei der die gesamte Anwendung in Bibliotheken enthalten ist und die Benutzeroberfläche nur ein dünnes Furnier darstellt. Am Ende rufen Sie den Stack vom Controller herunter, aber der Code befindet sich nicht im Controller.

In MVC ist das Modell nur ein Modell, oder ein "dummes Datenobjekt", wenn man so will. Es ist dazu gedacht, den Status zu halten und sollte nicht das Verhalten diktieren. Die Ansicht dient der Interaktion mit dem Benutzer und ist ebenfalls "dumm"; die Ansicht verwaltet die Benutzeroberfläche. Der Controller ist der Ort, an dem das Verhalten sitzt, oder er ist der Einstiegspunkt in das Verhalten, wenn die Anwendungslogik in Bibliotheken liegt. Ist das sinnvoll?

0voto

Seb Punkte 24444

Modell.

Der Controller dient nur zum Umschalten zwischen den verschiedenen Möglichkeiten. View ist nur für... die Ansicht.

Daher sollten Sie alle Berechtigungscodes in der Modellebene erstellen. Im Idealfall wird alles gut funktionieren. Wenn nicht, dann wird der Controller den Benutzer zum richtigen Anmeldefeld führen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X