多次调用web api的自定义授权过滤器

时间:2015-03-30 13:35:02

标签: .net c#-4.0 asp.net-web-api authorization asp.net-web-api2

我正在为我的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")]装饰的方法调用。

任何方向都会有很大帮助。

1 个答案:

答案 0 :(得分:0)

没有办法控制它被调用的次数。但是,有一个简单的解决方法:

protected override bool IsAuthorized(HttpActionContext actionContext)
{
   if (!string.IsNullOrEmpty(_action) {
       // do your logic here
   }
   else {
       return base.IsAuthorized(actionContext);
   }
}