我无法弄清楚如何使用 System.Web.Http.Filters 中的 IAuthorizationFilter 在 Web API 中实现授权过滤器。
这是我编写的一个简单过滤器,用于响应所有非 https 请求,并带有 403 禁止响应:
public class HttpsFilter : IAuthorizationFilter {
public bool AllowMultiple {
get {
return false;
}
}
public Task<HttpResponseMessage> ExecuteAuthorizationFilterAsync( HttpActionContext actionContext, CancellationToken cancellationToken, Func<Task<HttpResponseMessage>> continuation ) {
var request = actionContext.Request;
if ( request.RequestUri.Scheme != Uri.UriSchemeHttps ) {
HttpResponseMessage response = request.CreateResponse( HttpStatusCode.Forbidden );
response.Content = new StringContent( "<h1>HTTPS Required</h1>", Encoding.UTF8, "text/html" );
actionContext.Response = response;
return new Task<HttpResponseMessage>( delegate() {
return response;
} );
}
else
return continuation();
}
}
到目前为止我所写的运行,但是当我尝试通过常规 http 访问 api 时,它只是挂起,我从来没有得到响应。