通过全局过滤器保护 WebAPI

Ale*_*der 1 c# asp.net asp.net-mvc asp.net-web-api

我发现Controller只需添加以下行即可保护 MVC 应用程序中的所有 MVC

filters.Add(new System.Web.Mvc.AuthorizeAttribute());
Run Code Online (Sandbox Code Playgroud)

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

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

filters.Add(new System.Web.Http.AuthorizeAttribute());
Run Code Online (Sandbox Code Playgroud)

这会引发错误

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

Kne*_*lis 5

我假设您正在针对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...
    }
}
Run Code Online (Sandbox Code Playgroud)