【发布时间】:2015-03-09 19:17:18
【问题描述】:
我创建了一个自定义OAuthAuthorizationServerProvider,它具有以下方法:
override Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context)
override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
override Task TokenEndpoint(OAuthTokenEndpointContext context)
我想添加一个自定义DelegatingHandler 来阻止基于 IP 的访问。
但我找不到任何注册处理程序的地方。
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
List<DelegatingHandler> ipApi = new List<DelegatingHandler>();
ipApi.Add(new CheckIpMessageHandler());
var routeIpHandlers = HttpClientFactory.CreatePipeline(new HttpControllerDispatcher(config), ipApi);
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional },
constraints: null,
handler: routeIpHandlers
);
}
}
这不会将处理程序注册到管道中。 谢谢
【问题讨论】:
-
不能创建一个 IAuthorizationFilter 并全局添加吗?
-
ActionFilters 是一个 MVC/WebAPI 概念。我认为 OAuth2 中间件(OAuthAuthorizationServerProvider)甚至在到达上层框架之前就拦截了请求。
标签: c# asp.net-web-api authorization owin