Attributs d'autorisation multiple sur la méthode
Je vais avoir de la difficulté à spécifier deux attributs d'Autorisation sur une méthode de classe: l'utilisateur est autorisé à accéder si l'un des deux attributs sont vraies.
La Athorization classe ressemble à ceci:
[AttributeUsage(AttributeTargets.All, AllowMultiple = true)]
public class AuthAttribute : AuthorizeAttribute {
. . .
et de l'action:
[Auth(Roles = AuthRole.SuperAdministrator)]
[Auth(Roles = AuthRole.Administrator, Module = ModuleID.SomeModule)]
public ActionResult Index() {
return View(GetIndexViewModel());
}
Est-il une façon de résoudre ce problème ou dois-je besoin de repenser mon approche?
C'est à exécuter dans MVC2.
source d'informationauteur adamse
Vous devez vous connecter pour publier un commentaire.
Plusieurs
AuthorizeAttribute
cas sont traités par MVC comme si ils ont été rejoints parAND
. Si vous souhaitez unOR
comportement, vous aurez besoin de mettre en place votre propre logique de contrôle. De préférence, mettre en œuvreAuthAttribute
de prendre de multiples rôles et effectuer une vérification avecOR
logique.Une autre solution est d'utiliser la norme
AuthorizeAttribute
et de mettre en œuvre personnaliséeIPrincipal
qui permettra de mettre en œuvrebool IsInRole(string role)
d'une méthode à " OU " de comportement.Un exemple est ici:
https://stackoverflow.com/a/10754108/449906
Il y a une meilleure façon de le faire dans les versions ultérieures de asp.net vous pouvez faire les deux OU et et sur les rôles. Cela se fait par convention, la liste des rôles multiples dans un seul Autoriser à exécuter une OU où l'ajout de Plusieurs Autoriser Attributs ET.
OU exemple
ET l'Exemple
Vous pouvez trouver plus d'informations sur ce le lien suivant
https://docs.microsoft.com/en-us/aspnet/core/security/authorization/roles