【问题标题】:Add authorization to header and access [Authorize] controllers向标头添加授权并访问 [Authorize] 控制器
【发布时间】:2020-07-14 08:26:38
【问题描述】:

我使用 Jwt 令牌通过 .NET Core API 3.1 版登录。

我看到生成了令牌,但它无法访问[Authorize] 控制器,总是返回 401。我找到了向标头添加授权的方法。但是,没有详细的设置说明以及如何使用它来访问[Authorize] 控制器。

谁能告诉我如何使用 HttpClient 传递标头值,Startup.cs 中是否还有其他设置?非常感谢你帮助我!

【问题讨论】:

    标签: asp.net-core jwt token access-token bearer-token


    【解决方案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/";
            });
        ⋮
    }
    

    另外,请确保您使用的是 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);
    

    【讨论】:

    • 非常感谢您的指导,但仍然无法正常工作。我可以错过 client.DefaultRequestHeaders.Authorization 吗?我试图将它添加到我的代码中,但它没有任何帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-22
    • 2021-07-07
    • 2021-10-17
    • 2019-06-18
    • 1970-01-01
    • 2020-09-09
    相关资源
    最近更新 更多