Я могу сохранить его после входа в систему в ProtectedLocalStorage, вот так
Код: Выделить всё
await protectedLocalStorage.SetAsync("authToken", result.Data.Token);
Код: Выделить всё
public override async Task GetAuthenticationStateAsync()
{
ProtectedBrowserStorageResult token;
var anonymous = new ClaimsPrincipal(new ClaimsIdentity());
try
{
try
{
token = await _protectedBrowserStorage.GetAsync("authToken");
}
catch
{
token = new();
}
if (!token.Success)
{
return new AuthenticationState(anonymous);
}
httpClient.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", token.Replace("\"", ""));
var identity = new ClaimsIdentity(ParseClaimsFromJwt(token.Value), "jwt");
var user = new ClaimsPrincipal(identity);
return await Task.FromResult(new AuthenticationState(user));
}
catch (Exception exc)
{
return new AuthenticationState(anonymous);
}
}
Код: Выделить всё
await protectedLocalStorage.DeleteAsync("authToken");
Проблема в том, что когда я перехожу на любую страницу после входа в систему, _protectedBrowserStorage принимает значение null в GetAuthenticationStateAsync
Мне нужно знать, почему после входа в систему GetAuthenticationStateAsync вызывается дважды. Я предполагаю, что первый раз он вызывается на очень ранней стадии жизненного цикла Blazor, потому что я получаю это исключение.
Вызовы взаимодействия JavaScript не могут быть выполнены в настоящее время
И во второй раз он вызывается после того, как Blazor готов к нему получить доступ.
Что еще более важно, мне нужно знать, как получить доступ токен для всех страниц после входа в систему. Я знаю, что токен существует, но не могу получить к нему доступ
Подробнее здесь: https://stackoverflow.com/questions/791 ... fter-login