IAuthorizationFilter的OnAuthorization方法没有被调用

Ben*_*nCr 2 .net asp.net-mvc-4

我编写了一个自定义授权过滤器,用于AngularJS XSRF方法,但是没有调用过滤器.

奇怪的是,我从另一个项目复制它,它似乎在那里工作正常.

这是attrubute/filter代码.

    [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
    public sealed class ValidateAngularAntiForgeryTokenAttribute : FilterAttribute, IAuthorizationFilter
    {
        public void OnAuthorization(AuthorizationContext filterContext)
        {
            string token = filterContext.RequestContext.HttpContext.Request.Headers["X-XSRF-TOKEN"];
            object sessionToken = filterContext.RequestContext.HttpContext.Session["XSRF-TOKEN"];

            if (string.IsNullOrEmpty(token) || sessionToken == null || sessionToken.ToString() != token)
            {
                throw new UnauthorizedAccessException();
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

在这里它是在WebAPI控制器中装饰一个动作.

[Authorize]
public class WorksOrdersController : ApiController
{        
    [HttpPost]
    [ValidateAngularAntiForgeryToken]
    public void EmailJob(int id, EmailModel model)
    {
       // do something
    }
}
Run Code Online (Sandbox Code Playgroud)

我是否必须在Web.config中添加一些内容才能使其正常工作?在实际工作的项目的web.config中,我看不到任何显着不同的东西.

Ben*_*nCr 9

问题是IAuthorizationFilterASP.NET现在有两个接口.

一个System.Web.Mvc用于"普通"视图控制器,另一个System.Web.Http.Filters用于WebAPI.

using在版本中使用了错误的语句.