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

时间:2013-08-26 13:10:25

标签: asp.net-mvc

我正在使用SimpleMembership角色提供程序在我的项目中使用mvc4。我需要在我的项目中实现基于任务的访问。我的ActionResult([HttpPost])由Create,Get,Update和Delete方法组成。我实现了自定义Authorize类,它是......

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(调用创建,更新,删除和查看方法)中实现了全视图,创建,更新和删除功能。

我的问题是当我为Get方法[AuthorizeUser(AccessLevel =“Create”)]提供[AuthorizeUser(AccessLevel =“Create”)]时,创建方法等等...... 在控制进入ActionResult()之后,它首先检查[AuthorizeUser(AccessLevel =“some access level”)],一旦它是Authorize,它就不会检查其他方法[AuthorizeUser]。

在ActionResult()上尝试[AuthorizeUser]之后,我得出的结论是,只有每个页面请求都要检查授权(不是为了时间),有没有办法调用[AuthorizeUser(AccessLevel =“某个访问级别) “)]在单页请求中不止一次。

提前致谢...

0 个答案:

没有答案