Mit Authorize
Attribut kann ich Rollen angeben, die auf die Ressourcen zugreifen dürfen.
Aber wenn ich Admin-Benutzer habe, der zu jeder Ressource gehen darf, muss ich auch diese angeben
%Vor%Aber vielleicht gibt es eine Möglichkeit, wie ich irgendwie sagen kann, dass der Administrator es erlaubt hat, irgendwohin zu gehen und diese nicht im Autorize-Attribut anzugeben?
Also ich meine, wenn irgendwo in Code ( auf Controller oder auf Aktion ) wäre dies [Authorize(Roles="User")]
bedeutet es, dass Administrator-Rolle erlaubt, dort auch zu gehen.
Oder kann ich es auf alle Autorisieren Rollen dynamisch festlegen, wie wenn Anwendung starten?
Irgendwelche Ideen?
AKTUALISIERT:
Momentan habe ich einen Admin-Controller mit Autorize-Attribut [Authorize(Role="Administrator")]
und ich habe einige Aktionen in einigen anderen Controllern mit den Attributen [Authorize(Role="User")]
, so dass ich auch dort "Administrator"
hinzufügen muss, wenn ich keine bessere Lösung gefunden habe.
Ich denke, das wird für Sie funktionieren. Erstellen Sie mit dem AuthorizeAttribute einen eigenen Basiscontroller und übernehmen Sie dann die Übernahme der Basisklasse durch Ihre anderen Controller.
%Vor%Wie viele Controller / Aktionen haben Sie? Was, wenn Sie das später vergessen und vielleicht eine Seite haben, auf die Administratoren nicht zugreifen sollen?
Wird das Debuggen des Codes schwieriger?
Sie benötigen das Konzept Statische Rolle und Laufzeitrolle . Hier ist ein einfaches Beispiel:
Ihre Rollenliste und ihre Ebenen:
Benutzer und ihre statische Rolle (statische Rolle ist die Rolle, die Sie Benutzern zugewiesen haben):
Zur Laufzeit generieren Sie eine Laufzeitfunktion, indem Sie statische Rollen- und Rollenebenen verwenden. Benutzer mit höheren Rollenebenen erhalten automatisch die Rollen auf niedrigeren Ebenen. Nach der Berechnung lauten die Laufzeit-Rollen für diese Benutzer also:
Und dann können Sie einfach [Authorize (Roles="Viewer")] verwenden, Benutzer mit höherer Berechtigungsstufe (z. B. John, Sam) können ebenfalls darauf zugreifen. Weil sie zur Laufzeit auch die Viewer-Rolle haben müssen.
Der Sinn der Verwendung der Rolle "Statische Rolle" und "Ausführungszeit" besteht darin, dass die statische Rolle die Rollenzuweisung erleichtert. Und Run time role erleichtert die Ressourcenautorisierung.
Tags und Links asp.net-mvc-3 authorization