У меня проблема с токеном на стороне клиента с аутентификацией Blazor. Я реализовал аутентификацию на основе этих сообщений в блоге, я использую проект веб-сборки.
https://chrissainty.com/securing-your-blazor-apps-introduction-to-authentication-with-blazor/
https://chrissainty.com/securing-your-blazor-apps-authentication-with-clientside-blazor-using-webapi-aspnet-core-identity/
https://chrissainty.com/securing-your-blazor-apps-configuring-role-based-authorization-with-client-side-blazor/
Почти все работает нормально, но у меня проблема. На стороне сервера срок действия маркера аутентификации истек, но на стороне клиента у меня все еще есть токен аутентификации в локальном хранилище. Моя функция получения локального состояния:
public override async Task<AuthenticationState> GetAuthenticationStateAsync()
{
var savedToken = await _localStorage.GetItemAsync<string>("authToken");
if (string.IsNullOrWhiteSpace(savedToken))
{
return new AuthenticationState(new ClaimsPrincipal(new ClaimsIdentity()));
}
_httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("bearer", savedToken);
return new AuthenticationState(new ClaimsPrincipal(new ClaimsIdentity(ParseClaimsFromJwt(savedToken), "jwt")));
}
Что ж, глядя на заголовок ответа, я вижу, что сервер сообщает мне, что мой локальный токен истек, но я не знаю, как получить эту информацию на стороне клиента. , Так что моя клиентская сторона говорит мне, что я аутентифицирована, а на стороне сервера - нет. Я не хочу делать запрос для проверки этого каждый раз, когда мой метод GetAuthenticationStateAsyn c запускается для ручной очистки маркера локального хранилища. Как лучше всего справиться с этим поведением? Мне не хватает что-то в моем коде?
Ответ заголовка: "www-authenticate: ошибка канала-носителя =" invalid_token ", error_description =" Срок действия токена истек в 02/24/2020 11:52:35 ' ""
Спасибо.