В моем приложении MVC3 wep я расширил атрибут Authorize, как показано ниже.
public class MyAuthorizeAttribute : AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
if (Authenticate.IsAuthenticated() && httpContext.User.Identity.IsAuthenticated)
{
var authCookie = httpContext.Request.Cookies[FormsAuthentication.FormsCookieName];
if (authCookie != null)
{
var ticket = FormsAuthentication.Decrypt(authCookie.Value);
var roles = ticket.UserData.Split('|');
var identity = new GenericIdentity(ticket.Name);
httpContext.User = new GenericPrincipal(identity, roles);
}
}
return base.AuthorizeCore(httpContext);
}
public override void OnAuthorization(AuthorizationContext filterContext)
{
if (!Authenticate.IsAuthenticated())
HandleUnauthorizedRequest(filterContext);
base.OnAuthorization(filterContext);
}
В своих действиях я использую его как
[MyAuthorize(Roles = "Member,Inspector,SalesRep,Admin,SuperAdmin")]
public ActionResult OrderUpload()
Теперь я должен указать каждую роль пользователя в каждом действии. Я хотел бы указать что-то вроде ниже
[MyAuthorize(Roles = "Member")]
public ActionResult OrderUpload()
и это должно разрешить любую роль пользователя, равную или выше «Член». Таким образом, «Продавец» должен быть разрешен, тогда как «Посетитель», который находится ниже «Участника», не должен быть разрешен.
Все роли пользователей перечисляются с увеличением числа
public enum UserAccountType
{
Visitor = 5,
Member = 10,
Inspector = 15,
SalesRep = 20,
Admin = 25,
SuperAdmin = 30
}
Как мне изменить MyAuthorizeAttribute, чтобы это работало?
Спасибо