我过去经常使用[Authorize]
属性,它还允许您执行以下操作:
[Authorize(Users = "test")]
但是,我想添加另一个,
[Authorize(IsPermitted= PermissionsEnum.ThePermission)]
我有写出的逻辑来决定是否允许用户获得该权限,但我不确定如何将该重载添加到授权属性。
如果可能的话,我宁愿不做一个完全独立的授权属性。
我过去经常使用[Authorize]
属性,它还允许您执行以下操作:
[Authorize(Users = "test")]
但是,我想添加另一个,
[Authorize(IsPermitted= PermissionsEnum.ThePermission)]
我有写出的逻辑来决定是否允许用户获得该权限,但我不确定如何将该重载添加到授权属性。
如果可能的话,我宁愿不做一个完全独立的授权属性。
好吧,正如@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...
}
不幸的是你不能。您可以设置的唯一可能的属性是用户和角色。所以你必须创建一个单独的 Attribute 类。