私のMVC3wepアプリでは、以下のように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()
これにより、「メンバー」以上のすべてのユーザーロールが許可されます。したがって、「SalesRep」は許可する必要がありますが、「Member」の下にいる「Visitor」は許可しないでください。
すべてのユーザーロールは、数が増えるにつれて列挙型になります
public enum UserAccountType
{
Visitor = 5,
Member = 10,
Inspector = 15,
SalesRep = 20,
Admin = 25,
SuperAdmin = 30
}
これを機能させるためにMyAuthorizeAttributeを変更するにはどうすればよいですか?
ありがとう