Как избежать повторного получения кода токена в Blazor Webassembly 3.2.0 Preview 3 - PullRequest
0 голосов
/ 12 апреля 2020

В Blazor webassembly 3.2.0 Preview 3, страница Fetchdata использует этот код для вызова API сервера:

protected override async Task OnInitializedAsync()
{
    var httpClient = new HttpClient();
    httpClient.BaseAddress = new Uri(Navigation.BaseUri);

    var tokenResult = await AuthenticationService.RequestAccessToken();

    if (tokenResult.TryGetToken(out var token))
    {
        httpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {token.Value}");
        forecasts = await httpClient.GetJsonAsync<WeatherForecast[]>("WeatherForecast");
    }
    else
    {
        Navigation.NavigateTo(tokenResult.RedirectUrl);
    }

}

Есть ли способ инкапсулировать код получения токена в службу, например, с помощью Делегирующий Хэндлер. Я создал такой сервис, но я не уверен, как подключить мой обработчик к клиенту Http. У builder.Services.AddBaseAddressHttpClient () нет метода AddHttpMessageHandler, так как я могу присоединить мой делегирующий обработчик?

builder.Services.AddBaseAddressHttpClient()
       .AddHttpMessageHandler<MyHandler>();   <----This is not valid 
...