【发布时间】:2021-02-05 11:58:00
【问题描述】:
我正在开发一个 ASP.NET Core MVC 应用程序,我想在用户到达某个页面时为每个请求设置一个授权标头。我正在尝试使用 HttpClient 类中的 DefaultRequestHeaders.Authorization。 但是,它只是没有设置标题。 这是我的代码:
启动
public void ConfigureServices(IServiceCollection services)
{
services.AddHttpClient();
//Some more code
}
控制器
public class MyController: Controller
{
private readonly System.Net.Http.IHttpClientFactory _clientFactory;
public MyController(System.Net.Http.IHttpClientFactory clientFactory)
{
_clientFactory = clientFactory;
}
public IActionResult MethodWhichIWantToSetTheToken()
{
var client = _clientFactory.CreateClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(JwtBearerDefaults.AuthenticationScheme, "veryBigTokenHere");
string abc = Request.Headers["Authorization"]; //Yeah, it's null!
return View();
}
【问题讨论】:
-
Request.Headers["Authorization"]从到达控制器的请求中获取标头。client.DefaultRequestHeaders.Authorization是在 HttpClient 中设置头部,这意味着通过HttpClient发送的所有请求都会设置头部。 -
你是说如果我在另一个控制器中写那行我会得到值吗?
-
您如何使用
HttpClient,您是否使用HttpClient发送一些请求? -
我没有在其他任何地方使用 HttpClient
-
HttpClient与您的控制器没有任何共同之处。HttpClient可用于向某个服务器发送 HTTP 请求。您的控制器接收 HTTP 请求并返回 HTTP 响应。如果您想在控制器中接收Authorization标头,则必须从您的 UI(或调用您的端点的其他客户端)发送它。如果您想在您的应用中启用身份验证(或授权),我建议您访问docs.microsoft.com/en-us/aspnet/core/security/authentication/… 并阅读官方文档。
标签: c# asp.net-mvc asp.net-core jwt