通过全局过滤器保护WebAPI

时间:2016-05-02 07:32:51

标签: c# asp.net asp.net-mvc asp.net-web-api

我发现我可以通过添加行来保护MVC应用中的所有MVC Controller

filters.Add(new System.Web.Mvc.AuthorizeAttribute());

RegisterGlobalFilters。我的ApiControllers仍然需要通过手动添加[Authorize]属性来保护。是否有类似的行我可以添加以保护我的所有WebAPI ApiController

WebAPI的[Authorize]属性位于System.Web.Http.AuthorizeAttribute,但我没有成功

filters.Add(new System.Web.Http.AuthorizeAttribute());

抛出错误

  

给定的过滤器实例必须实现以下一个或多个过滤器接口:IAuthorizationFilter,IActionFilter,IResultFilter,IExceptionFilter。

1 个答案:

答案 0 :(得分:2)

我假设您在问题中注册GlobalFilterCollection,但这适用于MVC。您需要在AuthorizeAttribute注册WebApiConfig.cs

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.Filters.Add(new AuthorizeAttribute());

        // Other web api config rules...
    }
}
相关问题