向标头添加授权并访问 [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] 控制器的主要内容,如果未能解决你的问题,请参考以下文章

axios 授权标头/CORS 错误

页面刷新时不存在授权标头

向标头添加授权

运行时导入 Vue 组件的 webpack 块时如何添加授权标头

通过控制器助手授权:方法 authorize() 不存在 - Laravel 5.5

向标头添加授权