我正在为我的Web API控制器方法开发自定义授权过滤器。我的自定义过滤器如下所示: -
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class)]
public class ClaimsAuthorizeAttribute : AuthorizeAttribute
{
private string _action;
public ClaimsAuthorizeAttribute()
{
}
public ClaimsAuthorizeAttribute(string action)
{
_action = action;
}
protected override bool IsAuthorized(HttpActionContext actionContext)
{
//authorization logic
}
}
我已在网络Api配置中注册了过滤器。
问题是过滤器被多次调用。我希望它只能用[ClaimsAuthorizeAttribute(" ActionName")]装饰的方法调用。
任何方向都会有很大帮助。
答案 0 :(得分:0)
没有办法控制它被调用的次数。但是,有一个简单的解决方法:
protected override bool IsAuthorized(HttpActionContext actionContext)
{
if (!string.IsNullOrEmpty(_action) {
// do your logic here
}
else {
return base.IsAuthorized(actionContext);
}
}