2009-03-11 4 views

Antwort

3

Ich stimme dafür, wo es Sinn macht. Der Großteil meiner Berechtigungen wird durch Deko-Aktionen (oder sogar einige Controller) mit dem AuthorizeAttribute - oder einem davon abgeleiteten Attribut - verarbeitet. In einigen Fällen habe ich - wie meine Menüs - darauf geachtet, die Berechtigungsprüfung im Ansichtscode selbst vorzunehmen, anstatt sie in jedem Controller zu berechnen und Flags in ViewData weiterzuleiten. Es gibt einige Fälle, in denen bestimmte Aspekte des Modells nur für bestimmte Rollen verfügbar sind. In diesen Fällen habe ich darauf zurückgegriffen, das Modell um Methoden zu erweitern, die den aktuellen Benutzer und die Rollen übernehmen und die Überprüfung dort durchführen können.

0

Wenn Sie zwischen M, V oder c wählen müssen, ist das C der richtige Ort. Aber ich empfehle eine Architektur, wo Ihre App alle in Bibliotheken enthalten ist und die Benutzeroberfläche nur ein dünner Furnier ist. Am Ende rufen Sie den Stack vom Controller ab, aber der Code befindet sich nicht im Controller.

In MVC ist das Modell nur ein Modell oder ein "dummes Datenobjekt", wenn Sie so wollen. Es ist entworfen, um Zustand zu halten, und sollte Verhalten nicht diktieren. Die Ansicht ist für den Benutzer zur Interaktion mit und ist auch "dumm"; Die Ansicht behandelt die Benutzeroberfläche. Der Controller ist, wo Verhalten sitzt, oder ist der Einstieg in das Verhalten in dem Fall, in dem die App-Logik in Bibliotheken ist. Sinn ergeben?

+3

Deine Definition von MVC ist falsch. Das M in MVC ist der wichtigste Teil, es ist kein dummes Datenobjekt. Verhalten sollte in M ​​sein, das ist, wo Ihre Geschäftslogik ist. Ob Autorisierung Teil der Geschäftslogik ist, ist mir nicht klar. –

0

Modell.

Controller ist nur zum Wechseln zwischen verschiedenen Möglichkeiten. Ansicht ist nur zum Betrachten.

Sie sollten also alle Autorisierungscodes in der Model-Ebene vornehmen. Im Idealfall wird alles gut funktionieren. Wenn nicht, dann bringt der Controller den Benutzer zur richtigen Login-Box.

1

Ich denke, Autorisierung ist ein Querschnittsthema. Sollte an einem Ort sein - ein Aspekt, der deklarativ angewendet werden kann, wo er benötigt wird.

1

Der Controller!

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

Die Autorisierung eines Benutzers umfasst die Übernahme der von der View bereitgestellten Anmeldeinformationen, deren Überprüfung anhand einer Autorisierungsliste im Modell und die Durchführung einer Prüfung.

Das in der Steuerung durchgeführt wird: Benutzer-Credentials aus View , wenn (mit Benutzerliste vergleichen in Modell Spiel zurückgibt) Benutzer genehmigen sonst Zugang verweigern

Verwandte Themen