ASP.NET Autorize-Attribut und Admin-Benutzerrolle

8

Mit Authorize Attribut kann ich Rollen angeben, die auf die Ressourcen zugreifen dürfen.

%Vor%

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.

    
Joper 10.08.2011, 15:33
quelle

5 Antworten

2

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%

Das ist meiner Meinung nach beängstigend.

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?

    
Doug Chamberlain 10.08.2011 16:02
quelle
2
%Vor%     
quelle
1

Sie können einen benutzerdefinierten Filter erstellen und damit Ihre Actions oder Controller damit dekorieren. Dies ist eine einfache Struktur, die ich ziemlich oft verwendet habe:

%Vor%

Sie können weitere hier

lesen     
LeftyX 10.08.2011 16:53
quelle
0

Das mache ich: Stellen Sie sicher, dass Benutzer, die sich in der Rolle "Admin" befinden, auch in der Rolle "Benutzer" sind.

    
JSideris 17.04.2014 00:14
quelle
0

Sie benötigen das Konzept Statische Rolle und Laufzeitrolle . Hier ist ein einfaches Beispiel:

Ihre Rollenliste und ihre Ebenen:

  • Rolle: Admin | Stufe: 1
  • Rolle: Redakteur | Level: 2
  • Rolle: Betrachter | Level: 3

Benutzer und ihre statische Rolle (statische Rolle ist die Rolle, die Sie Benutzern zugewiesen haben):

  • Benutzer: John | Rolle: Admin
  • Benutzer: Sam | Rolle: Herausgeber
  • Benutzer: Peter | Rolle: Betrachter

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:

  • Benutzer: John | Rolle: Admin, Editor, Viewer
  • Benutzer: Sam | Rolle: Editor, Viewer
  • Benutzer: Peter | Rolle: Betrachter

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.

    
Luo Jiong Hui 22.06.2017 15:43
quelle

Tags und Links