J'essaye d'employer Enum
à l'annotation [Authorize]
. Je configure déjà mais ça ne marche toujours pas, les politiques de sécurité permettent l'accès.Comment configurer l'annotation [Autoriser] pour utiliser Enum?
Je n'ai pas créé mon Enum
avec l'exemple des nombres: Administrator = 1
ou quelque chose comme ça, je viens de créer en utilisant la description comme Administrator, Manager, Common
. Je ne voudrais pas créer des nombres comme index, je veux juste créer par la description comme je l'ai montré.
Comment résoudre ce problème?
Enum
public enum RoleType{
Administrator,
Manager,
Common
};
AuthorizeAttribute
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Constructor | AttributeTargets.Enum | AttributeTargets.Method, AllowMultiple = false)]
public class PermissionFilter : AuthorizeAttribute{
public RoleType Roles {get;set;}
protected override bool AuthorizeCore(HttpContextBase httpContext){
if (httpContext == null)
throw new ArgumentNullException("httpContext");
if (!httpContext.User.Identity.IsAuthenticated)
return false;
//get the Session of User
User user = httpContext.Session["User"] as User;
RoleType role = user.role;
if (((Roles & role) != role))
return false;
return true;
}
public override void OnAuthorization(AuthorizationContext filterContext){
base.OnAuthorization(filterContext);
if (filterContext.Result is HttpUnauthorizedResult)
filterContext.HttpContext.Response.Redirect("/Home/accessDenied");
}
}
Méthode
[PermissionFilter(Roles= RoleType.Manager)]
public ActionResult viewAllAdmin(int? pagina, String nome){
}
Donc, vous n'avez pas besoin d'aide de stackoverflow après tout. – buffjape