Permettre à de multiples rôles de contrôleur d'accès à l'action
Droit maintenant, je décorer une méthode comme ceci pour permettre aux "membres" pour accéder à mon action de contrôleur
[Authorize(Roles="members")]
Comment puis-je permettre à plus d'un rôle? Par exemple, le code suivant ne fonctionne pas, mais il montre ce que je suis en train de faire (de permettre de "membres" et "admin" accès):
[Authorize(Roles="members", "admin")]
- S'il vous plaît changer la accepté de répondre à cette question. La personne avec le actuellement accepté de répondre édité en indiquant qu'il s'était trompé.
Vous devez vous connecter pour publier un commentaire.
Une autre option est d'utiliser un seul autoriser le filtre que vous avez posté, mais retirer l'intérieur des citations.
Si vous souhaitez utiliser des rôles personnalisés, vous pouvez le faire:
CustomRoles
classe:Utilisation
Si vous avez quelques rôles, peut-être vous pouvez combiner entre eux (pour plus de clarté) comme ceci:
Utilisation
Une possible simplification serait la sous-classe
AuthorizeAttribute
:Utilisation:
Du point de vue sémantique, il est le même que Jim Schmehil de réponse.
Pour MVC4, à l'aide d'un
Enum
(UserRoles
) avec mes rôles, je utiliser unAuthorizeAttribute
.Sur mon action commandée, je n':
Et j'utilise un custom
AuthorizeAttribute
comme ça:C'est en partie modifiés FNHMVC par Fabricio Martínez Tamayo https://github.com/fabriciomrtnz/FNHMVC/
Si vous vous trouvez dans l'application de ces 2 rôles souvent, vous pouvez les envelopper dans leur propre Autoriser. C'est vraiment une extension de la accepté de répondre.
Et appliquez ensuite votre nouveau autoriser à l'Action. Je pense que cela ressemble plus propre et se lit facilement.
Autre solution, vous pouvez utiliser des constantes pour que la convention et d'ajouter de multiples [Autoriser] attributs. Check this out:
Puis dans le contrôleur:
Authorize
attributs d'employer ET de sémantique et d'exiger que TOUTES les conditions soient remplies (c'est à dire l'utilisateur doit être à la fois l'Administrateur et Invité les rôles).Un code de meilleure qualité avec l'ajout d'une sous-classe
AuthorizeRole.cs
Comment utiliser ce
À L'Aide De AspNetCore 2.x, vous devez aller d'une manière un peu différente:
simplement l'utiliser comme ceci: