为什么OnAuthorization
为我的直接AuthorizationFilterAttribute
调用了两次?
public class ApiAuthenticateAttribute : AuthorizationFilterAttribute
{
public void override OnAuthorization(System.Web.Http.Controllers.HttpActionContext actionContext)
{
if(NotAuthorized())
throw new Exception();
}
}
答案 0 :(得分:2)
问题在于Ninject.Web.WebApi。由于某种原因,它是两次注册过滤器。将软件包更新到最新版本(v 3.2.1)修复了该问题。
答案 1 :(得分:1)
我在WebAPIconfig.cs中注册了AuthorizeAttribute:
public static void Register(HttpConfiguration config)
{
config.Filters.Add(new Global.Security.MyAuthorizeAttribute());
此外,我使用属性修饰了方法。
[MyAuthorize]
public IHttpActionResult Get(string name)
这导致public override void OnAuthorization(System.Web.Http.Controllers.HttpActionContext actionContext)
方法被调用两次。
解决方案要么全局设置(作为配置过滤器),要么单独向方法添加属性。