gpt4 book ai didi

asp.net-web-api - 在Web API中正确实现IAuthorizationFilter

转载 作者:行者123 更新时间:2023-12-03 11:58:44 25 4
gpt4 key购买 nike

我在弄清楚如何使用System.Web.Http.Filters中的IAuthorizationFilter在Web API中实现授权过滤器时遇到了麻烦。

这是我写的一个简单过滤器,它使用403禁止响应来响应所有非https请求:

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时,它只是挂起,而我从未得到响应。

最佳答案

您需要将任务保存到变量中并在返回之前调用task.Start()方法,或者使用Task<HttpResponseMessage>.Factory.StartNew(Action action)方法创建任务。

关于asp.net-web-api - 在Web API中正确实现IAuthorizationFilter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15978999/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com