Cómo extender AuthorizeAttribute y verificar los roles del usuario

Estoy ocupado escribiendo mi propio atributo personalizado para mi método de acción llamado MyAuthorizeAttribute, todavía estoy ocupado escribiendo el código, aquí está mi código parcial:

[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();
   }
}

Aquí está mi enumeración de roles:

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

Mi método de acción:

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

La razón por la que no utilicé Roles = "Administrador, SuperAdministrator" fue porque los roles están codificados. No quiero tener 100 lugares para cambiar si cambia el nombre del rol.

Dado mi método, cuando llega a si (Roles! = 0) el valor total de Roles es 3, ¿cómo verificaría si estos 2 roles están en la lista de roles de usuario para un usuario específico?

¿Lo estoy haciendo bien aquí? Si no, ¿cómo podría implementar esto? No tiene por qué ser así como lo hice.

Respuestas a la pregunta(2)

Su respuesta a la pregunta