gpt4 book ai didi

asp.net-mvc-4 - 无法从委派处理程序 Web API 返回未经授权的 HTTP

转载 作者:行者123 更新时间:2023-12-04 17:49:42 36 4
gpt4 key购买 nike

我正在尝试在 DelegatingHandler 中实现身份验证。下面是一个例子。

public class AuthHandler: DelegatingHandler
{
protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
var auth = request.Headers.Authorization;
if (!auth.Scheme.Equals("UberSecureScheme"))
{
return new Task<HttpResponseMessage>(() => new HttpResponseMessage(HttpStatusCode.Unauthorized)
{
Content = new StringContent("You have no token")
});
}

return base.SendAsync(request, cancellationToken);
}
}

这永远不会执行任务,也不会返回任何响应。如果我更改代码以执行一些任务延续的事情,就像我看到的一些示例一样,那么首先执行 Controller 。
return base.SendAsync(request, cancellationToken)
.ContinueWith(task =>
{
var response = task.Result;
response.StatusCode = HttpStatusCode.Unauthorized;
return response;
});

这显然是一场灾难。我不能让某人进行删除,然后告诉他们他们未经授权这样做。

我也遇到过有人说只是抛出一个 HTTPResponseException。无论我在那里输入什么状态代码(404、401 等等),浏览器总是会收到 500 内部服务器错误。

最佳答案

if (!auth.Scheme.Equals("UberSecureScheme"))
{
var response = request.CreateResponse(HttpStatusCode.Unauthorized);
response.ReasonPhrase = "You have no token";
return Task.FromResult<HttpResponseMessage>(response);
}

关于asp.net-mvc-4 - 无法从委派处理程序 Web API 返回未经授权的 HTTP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20116176/

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