У меня есть клиентский проект Blazor WebAssembly, который подключается к существующему API. При входе в систему токен JWT сохраняется в локальном хранилище.
Я использую NSwag для создания клиента для моего API, который вводится и изменяет HttpClient на синглтон.
builder.Services.AddSingleton(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
builder.Services.AddSingleton<Client>();
Я предполагаю, что Клиент (мой сгенерированный клиент NSwag) использует HttpClient из DI. Поскольку после входа в систему я звоню, чтобы получить дополнительную информацию о пользователе с токеном. Что работает.
Я добавил токен следующим образом:
@inject Client MambaClient
@inject HttpClient HttpClient
....
HttpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", result.Token);
Однако, если я попытаюсь выполнить запрос на другой странице, я теперь получаю 401 Unauthorized, поэтому заголовок auth исчез из запрос, и я не уверен, почему.
Есть какие-нибудь советы?
Конструктор клиента выглядит так:
public Client(System.Net.Http.HttpClient httpClient)
{
_httpClient = httpClient;
_settings = new System.Lazy<Newtonsoft.Json.JsonSerializerSettings>(() =>
{
var settings = new Newtonsoft.Json.JsonSerializerSettings();
UpdateJsonSerializerSettings(settings);
return settings;
});
}