Я унаследовал веб-сайт, написанный на Blazor и. NET Core 3.1, и мне нужно предоставить пользователю кнопку «Выйти». Веб-сайт использует пользовательскую реализацию AuthenticationStateProvider
со следующим методом GetAuthenticationStateAsync()
:
public override async Task<AuthenticationState> GetAuthenticationStateAsync()
{
ClaimsIdentity identity = new ClaimsIdentity();
if (_currentUser != null)
{
identity = GenerateClaimsForCurrentUser();
}
else
{
try
{
var user = await sessionStorage.GetItemAsync<Credentials>("User");
if (user != null && await IsAuthentic(user))
{
_currentUser = await UserInfo(user);
identity = GenerateClaimsForCurrentUser();
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
return new AuthenticationState(new ClaimsPrincipal(identity));
}
Чтобы убедиться, что пользователь вошел в систему, код:
AuthenticationState authState = await authenticationState.GetAuthenticationStateAsync();
ClaimsPrincipal principal = authState.User;
if (principal.Identity.IsAuthenticated)
{
...
}
Проблема в написанном мною методе Logout()
, который выполняется при нажатии на ссылку «Выйти». Я удаляю сеанс «Пользователь» из хранилища сеансов Blazor, но когда вызывается principal.Identity.IsAuthenticated
, он по-прежнему возвращается как true
?
Кто-нибудь знает, как я могу установить IsAuthenticated
в false
при выходе из системы?