0

我过去经常使用[Authorize]属性,它还允许您执行以下操作:

[Authorize(Users = "test")]

但是,我想添加另一个,

[Authorize(IsPermitted= PermissionsEnum.ThePermission)]

我有写出的逻辑来决定是否允许用户获得该权限,但我不确定如何将该重载添加到授权属性。

如果可能的话,我宁愿不做一个完全独立的授权属性。

4

2 回答 2

2

好吧,正如@Dave A 在评论中所说,您可以扩展本机Authorize属性并实现自己的授权方法,例如:

public class MyAuthorizeAttribute : AuthorizeAttribute
{
    // create your custom property
    public PermissionsEnum IsPermitted { get; set; }

    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        bool authorized = // create your own validation and return a bool value                
        if (authorized)
        {
            return false;       
        }

            // if you want to have the nativa validation, call it from the base method
        return base.AuthorizeCore(httpContext);
    }
}

并记住使用您的自定义授权属性来装饰您的控制器/操作,例如:

[MyAuthorize(IsPermitted = PermissionsEnum.Sales)]
public class OrderController : Controller 
{
   // actions...    
}
于 2013-03-26T03:06:49.973 回答
0

不幸的是你不能。您可以设置的唯一可能的属性是用户和角色。所以你必须创建一个单独的 Attribute 类。

于 2013-03-26T01:27:48.990 回答