0
我想在JWT令牌过期时注销我的用户。但出于某种原因,在我退出后,ClaimsPrincipal仍然存在。ASP.NET身份 - 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感谢您的时间。我从'ActionFilter'中调用Signout(),并且即使在调用Signout之后,action方法也会继续执行。我通过签出会话解决了问题,然后在过滤器中设置'filterContext.Result = new RedirectResult('logouturl)'。这样它就停止了Action方法的执行并正确地注销了用户。 – udayr