Код: Выделить всё
PersistentAuthenticationStateProviderКод: Выделить всё
public async override Task GetAuthenticationStateAsync()
{
TokenProvider tokenProvider = await GetTokenProvide();
if (string.IsNullOrWhiteSpace(tokenProvider.AccessToken))
{
return new AuthenticationState(new ClaimsPrincipal(new ClaimsIdentity()));
}
AuthenticationState? state = new(new ClaimsPrincipal(new
ClaimsIdentity(GetClaimsFromJwt(tokenProvider.AccessToken), "jwt")));
AuthenticationStateUser = state.User;
return state;
}
Код: Выделить всё
public RefitService(IHttpClientFactory http, ProtectedSessionStorage sessionStorage)
{
_client = http.CreateClient(HTTP_CLIENT_KEY);
_sessionStorage = sessionStorage;
_refitSettings = new(new NewtonsoftJsonContentSerializer())
{
AuthorizationHeaderValueGetter = (request, cancellationToken) =>
{
TokenProvider tokenProvider = GetTokenProvide().GetAwaiter().GetResult();
string? acessToken = tokenProvider.AccessToken;
return Task.FromResult(acessToken!);
}
}
}
Код: Выделить всё
protected override async Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
string? token = _tokenProvider.AccessToken;
if (!string.IsNullOrEmpty(token)) request.Headers.Authorization = new AuthenticationHeaderValue("Bearer ", token);
HttpResponseMessage? response = await base.SendAsync(request, cancellationToken);
return response;
}
Подробнее здесь: https://stackoverflow.com/questions/777 ... t-pipeline
Мобильная версия