Comment étendre AuthorizeAttribute et vérifier les rôles de l'utilisateur

Je suis en train de rédiger mon propre attribut personnalisé pour ma méthode d'action appelé MyAuthorizeAttribute, je suis toujours occupé à écrire le code, voici mon partiel de code:

[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
public class  MyAuthorizeAttribute : AuthorizeAttribute
{
   public new Role Roles;

   public override void OnAuthorization(AuthorizationContext filterContext)
   {
      base.OnAuthorization(filterContext);

      if (Roles != 0)  //Did it this way to see what the value of Roles was
         return;

      //Here I am going to get a list of user roles
      //I'm doing my own database calls

      filterContext.Result = new HttpUnauthorizedResult();
   }
}

Ici, c'est mon Rôle enum:

public enum Role
{
   Administrator = 1,
   SuperAdministrator = 2
}

Ma méthode d'action:

[MyAuthorize(Roles = Role.Administrator|Role.SuperAdministrator)]
public ActionResult Create()
{
   return View();
}

La raison pourquoi je n'ai pas utiliser de Rôles = "Administrateur,Super -" a été parce que les rôles sont codées en dur. Je ne veux pas avoir un 100 places à changer si le rôle du changement de nom.

Donné ma méthode, quand il arrive à s' (Rôles != 0) alors les Rôles de la valeur totale est de 3, comment pourrais-je vérifier pour voir si ces 2 rôles est dans la liste des rôles d'utilisateur pour un utilisateur spécifique?

Suis-je la faire corriger ici? Si non, comment ferais-je autrement mettre en œuvre? Il n'a pas à être de cette façon que je l'ai fait dans.

Est votre problème résolu par l'une des deux réponses ci-dessous? Si oui, veuillez accepter la réponse. Il va aider les autres qui a le même problème, comme moi.

OriginalL'auteur Brendan Vogt | 2011-02-25