向标头添加授权并访问 [Authorize] 控制器
Posted
技术标签:
【中文标题】向标头添加授权并访问 [Authorize] 控制器【英文标题】:Add authorization to header and access [Authorize] controllers 【发布时间】:2020-07-14 08:26:38 【问题描述】:我使用 Jwt 令牌通过 .NET Core API 3.1 版登录。
我看到生成了令牌,但它无法访问[Authorize]
控制器,总是返回 401。我找到了向标头添加授权的方法。但是,没有详细的设置说明以及如何使用它来访问[Authorize]
控制器。
谁能告诉我如何使用 HttpClient 传递标头值,Startup.cs 中是否还有其他设置?非常感谢你帮助我!
【问题讨论】:
【参考方案1】:确保您将 JWT 身份验证添加到 Startup.cs
中的 DI 管道,如下所示:
public void ConfigureServices(IServiceCollection services)
⋮
services.AddAuthentication("Bearer")
.AddJwtBearer("Bearer", options =>
options.Audience = "http://localhost:5001/";
options.Authority = "http://localhost:5000/";
);
⋮
Authorize with a specific scheme in ASP.NET Core
Overview of ASP.NET Core authentication
另外,请确保您使用的是 Startup.cs
中的授权中间件,如下所示:
public void Configure(IApplicationBuilder app)
⋮
app.UseAuthentication();
app.UseAuthorization();
⋮
更新:
以下是设置HttpClient
的方法:
var client = new HttpClient();
string token; // your token
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
ASP.NET Core Middleware
【讨论】:
非常感谢您的指导,但仍然无法正常工作。我可以错过 client.DefaultRequestHeaders.Authorization 吗?我试图将它添加到我的代码中,但它没有任何帮助以上是关于向标头添加授权并访问 [Authorize] 控制器的主要内容,如果未能解决你的问题,请参考以下文章
运行时导入 Vue 组件的 webpack 块时如何添加授权标头