我正在尝试在JWT令牌过期时注销我的用户。但出于某种原因,在我退出后,ClaimsPrincipal仍然存在。
例如: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));
}
我感谢任何可能指导我解决此问题的建议/想法。
答案 0 :(得分:0)
感谢您的时间。我在' ActionFilter'中呼叫Signout()。并且即使在调用Signout之后,action方法仍继续执行。我通过注销会话然后设置
解决了这个问题filterContext.Result = new RedirectResult('logouturl)
过滤器中的。这样就停止了Action方法的执行并正确地注销了用户