Добавьте авторизацию в заголовок и получите доступ к контроллеру [Authorize] - PullRequest
0 голосов
/ 02 апреля 2020

Я использую токен Jwt для входа в систему. NET Core API версии 3.1.

Я видел сгенерированный токен, но он не мог получить доступ к [Authorize] контроллерам, всегда возвращает 401. Я нашел способ добавить авторизацию для заголовков. Однако, нет подробных инструкций по настройке и как использовать их для доступа к [Authorize] контроллерам.

Может кто-нибудь сказать мне, как передавать значения заголовков с помощью HttpClient, и есть ли другие настройки в Startup.cs? ? Большое спасибо за помощь!

1 Ответ

1 голос
/ 02 апреля 2020

Убедитесь, что вы добавляете аутентификацию JWT в свой конвейер DI в Startup.cs следующим образом:

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);
...