Wie autorisiere ich eine Reihe von Controllern, ohne die Annotation auf jeden zu setzen?

7

Ich habe Sätze von Controllern, die jeweils für jeden Autorisierungstyp verwendet werden. Zum Beispiel wird eine Klasse-A-Autorisierung eine Gruppe von Controllern haben, die jeweils eine Autorisierung der Klasse A erfordern. Gibt es eine Möglichkeit, ein [Authorize(Role="Class A")] -Attribut irgendwo zu platzieren, das für jeden dieser Controller gilt, ohne jeden Controller mit dem gleichen Attribut ausstatten zu müssen?

    
Travis J 22.03.2012, 21:34
quelle

5 Antworten

9

Sie können diese Controller initialisieren, die von Ihrem Basiscontroller stammen. Setzen Sie Ihr Attribut auf eine Controller-Basisklasse und stellen Sie sicher, dass jeder Controller von der Basisklasse abgeleitet ist.

%Vor%     
gandil 22.03.2012, 21:41
quelle
4

Ja, es gibt einen Weg, all diese A-class -Controller von einem Basis-Controller abzuleiten und darauf das AuthorizeAttribute :

zu setzen %Vor%     
gdoron 22.03.2012 21:38
quelle
4

2 oder 3 Antworten hier erklärt, wie Sie es tun können ... aber Sie können auch Fluent Security verwenden, um alle Controller zu behandeln + Aktionen in einer Datei eingerichtet. Einige der Vorteile (von ihrer Website):

Codebasierte Konfiguration

Keine Attribute oder XML, die den Code überladen.

Niedriger Druck

Fließende Sicherheit wird sich in Ihrer Anwendung nicht wie ein Lauffeuer verbreiten. Ihre Konfiguration kann in einer einzigen Datei gespeichert werden.

    
Romias 22.03.2012 22:27
quelle
3

Sie können von einem Basis-Controller wie

erben %Vor%

Sonst würden Sie einen globalen Filter betrachten, und bei Ihrer Frage nehme ich an, dass Sie mehrere Rollen und Mengen haben, also glaube ich nicht, dass globale Filter für Sie sind.

    
Jay Otterbein 22.03.2012 21:38
quelle
2

Setzen Sie das Attribut auf eine Basisklasse und erben Sie, und erstellen Sie die Hierarchie, die am besten zu Ihrem Szenario passt ...

    
xandercoded 22.03.2012 21:37
quelle