ASP.NET标识 - AuthenticationManager.SignOut无效

时间:2015-09-03 22:35:41

标签: asp.net asp.net-identity claims-based-identity claims

我正在尝试在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));
    }

我感谢任何可能指导我解决此问题的建议/想法。

1 个答案:

答案 0 :(得分:0)

感谢您的时间。我在' ActionFilter'中呼叫Signout()。并且即使在调用Signout之后,action方法仍继续执行。我通过注销会话然后设置

解决了这个问题
filterContext.Result = new RedirectResult('logouturl)
过滤器中的

。这样就停止了Action方法的执行并正确地注销了用户