Я пытаюсь выйти из системы, когда токен JWT истек. Но по какой-то причине ClaimsPrincipal все еще существует после I Signout.ASP.NET Identity - AuthenticationManager.SignOut не работает
Например: Request.IsAuthenticated всегда верна даже после того, как я вышла.
Я выхожу из всех доступных типов аутентификации. (ApplicationCookie, ExternalCookie, Auth0).
Я не уверен, что мне здесь не хватает.
internal static void SignOut()
{
var authenticationManager = HttpContext.Current.Request.GetOwinContext().Authentication;
if (authenticationManager == null) return;
var appTypes = authenticationManager.GetAuthenticationTypes().Select(at => at.AuthenticationType).ToArray();
authenticationManager.SignOut(appTypes);
var httpResponse = HttpContext.Current.Response;
var httpRequest = HttpContext.Current.Request;
httpResponse.Redirect(
string.Format("https://{0}/logout?returnTo={1}",
ConfigurationManager.AppSettings["auth0Domain"],
httpRequest.Url));
}
Я ценю любые предложения/мысли, которые могут помочь мне в решении этой проблемы.
Не знаете, какой идентификационный сервер вы используете, но вот руководство от Identityserver https://identityserver.github.io/Documentation/docs/overview /mvcGettingStarted.html. См. «Добавление журнала» –
Показать код в 'Startup.Auth.cs'? – trailmax
@trailmax Спасибо за ваше время. Я вызывал Signout() из ActionFilter, и метод действия продолжал выполняться даже после вызова Signout. Я решил проблему, выйдя из сеанса, а затем установил в фильтре filterContext.Result = новый RedirectResult ('logouturl)'. Таким образом, он прекратил выполнение метода Action и правильно вывел пользователя. – udayr