Im Moment dekoriere ich eine Methode wie diese, damit "Mitglieder" auf meine Controller-Aktion zugreifen können
[Authorize(Roles="members")]
Wie erlaube ich mehr als eine Rolle? Zum Beispiel funktioniert Folgendes nicht, aber es zeigt, was ich versuche (Zugriff für "Mitglieder" und "Administrator" zulassen):
[Authorize(Roles="members", "admin")]
asp.net-mvc
controller
roles
Codette
quelle
quelle
Antworten:
Eine andere Möglichkeit besteht darin, einen einzelnen Autorisierungsfilter zu verwenden, während Sie Beiträge veröffentlichen, aber die inneren Anführungszeichen zu entfernen.
quelle
Wenn Sie benutzerdefinierte Rollen verwenden möchten, können Sie dies tun:
CustomRoles
Klasse:Verwendung
Wenn Sie nur wenige Rollen haben, können Sie diese möglicherweise (aus Gründen der Übersichtlichkeit) folgendermaßen kombinieren:
Verwendung
quelle
Eine mögliche Vereinfachung wäre die Unterklasse
AuthorizeAttribute
:Verwendungszweck:
Semantisch ist es dasselbe wie Jim Schmehils Antwort.
quelle
Für MVC4 verwende ich ein
Enum
(UserRoles
) mit meinen Rollen und eine benutzerdefinierteAuthorizeAttribute
.Bei meiner kontrollierten Aktion mache ich:
Und ich benutze einen solchen Brauch
AuthorizeAttribute
:Dies ist Teil des modifizierten FNHMVC von Fabricio Martínez Tamayo https://github.com/fabriciomrtnz/FNHMVC/
quelle
Eine weitere klare Lösung: Sie können Konstanten verwenden, um die Konvention beizubehalten und mehrere [Authorize] -Attribute hinzuzufügen. Überprüfen Sie dies heraus:
Dann in der Steuerung:
quelle
Authorize
Attribute verwenden UND-Semantik und erfordern, dass ALLE Bedingungen erfüllt sind (dh der Benutzer muss sich sowohl in der Administrator- als auch in der Gastrolle befinden).Wenn Sie diese beiden Rollen häufig anwenden, können Sie sie in ihre eigene Berechtigung einschließen. Dies ist wirklich eine Erweiterung der akzeptierten Antwort.
Wenden Sie dann Ihre neue Berechtigung auf die Aktion an. Ich denke, das sieht sauberer aus und liest sich leicht.
quelle
Besserer Code durch Hinzufügen einer Unterklasse
AuthorizeRole.cs
Wie man das benutzt
quelle
Mit AspNetCore 2.x müssen Sie einen etwas anderen Weg gehen:
benutze es einfach so:
quelle
quelle