Asp.net mvc mvc.net自定义[授权]属性

Asp.net mvc mvc.net自定义[授权]属性,asp.net-mvc,Asp.net Mvc,我在我的项目中使用mvc4,使用SimpleMembership角色提供程序。我需要在我的项目中实现基于任务的访问。我的ActionResult([HttpPost])由创建、获取、更新和删除方法组成。我实现了自定义授权类,它是 public class AuthorizeUserAttribute : AuthorizeAttribute { // Custom property public string AccessLevel { get; set; }

我在我的项目中使用mvc4,使用SimpleMembership角色提供程序。我需要在我的项目中实现基于任务的访问。我的ActionResult([HttpPost])由创建、获取、更新和删除方法组成。我实现了自定义授权类,它是

public class AuthorizeUserAttribute : AuthorizeAttribute
{

    // Custom property
    public string AccessLevel { get; set; }          
    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        var isAuthorized = base.AuthorizeCore(httpContext);


   if (!isAuthorized)
        {
            return false;
        }

        string privilegeLevels = string.Join("", objManager.GetPermissions()); // Call another method to get rights of the user from DB(view,delete,update,create)


        if (privilegeLevels.Contains(this.AccessLevel))
        {
            return true;
        }
        else
        {
            return false;
        }
    }

    protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
    {
        //some code for redirect to request page and showing alert("you don't have permission to do this action") through Response.

    }
}
我不能在每个ActionResult上使用[AuthorizeUser(AccessLevel=“获取或删除或查看或创建”)]。 因为我在一个ActionResult(调用创建、更新、删除和查看方法)中实现了total view、create、update和delete功能

我的问题是,当我为Get方法指定[AuthorizeUser(AccessLevel=“Get”)]时,为Create方法指定[AuthorizeUser(AccessLevel=“Create”)],等等。。。。 控件进入ActionResult()后,它首先检查[AuthorizeUser(AccessLevel=“some access level”)],一旦授权,它就不会检查其他方法[AuthorizeUser]

在ActionResult()上尝试[AuthorizeUser]之后,我得出结论,只有对于每个页面请求,它才检查授权(而不是第二次),是否有任何方法可以在单个页面请求中多次调用[AuthorizeUser(AccessLevel=“some access level”)]


提前感谢…

您是否只注释了控制器?是这个吗?你应该更清楚。授权pop来自每个请求。我不是在向控制器注释。我正在注释我的ActionResult()的每一种方法;