MVC - 用户在cookie过期后仍然进行身份验证

时间:2014-01-23 12:49:18

标签: asp.net asp.net-mvc authentication cookies asp.net-identity

我已经设置了我的第一个登录系统并且已经关注:

https://stackoverflow.com/a/10524305

存储一些额外的数据,而不必多次访问数据库。

我遇到的问题是,当Cookie /故障单过期时,仍然会看到用户已通过身份验证?

例如:

HttpCookie authCookie = Request.Cookies[FormsAuthentication.FormsCookieName];

authCookie为null,但

HttpContext.Current.User.Identity.IsAuthenticated 

继续返回true。

如果Cookie已过期,有没有办法强制注销?

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以尝试替换

  

HttpContext.Current.User.Identity.IsAuthenticated

HttpCookie authCookie = Request.Cookies[FormsAuthentication.FormsCookieName];
FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value); 
if(authTicket.Expired) (...)

但这并不能解释为什么HttpContext.Current.User.Identity.IsAuthenticated仍然设置为true。 我首先要确保我的表单身份验证和会话过期在配置文件中设置为相同的值:

<authentication mode="Forms">

<forms cookieless="UseCookies"
             //some configuration + 
             timeout="20">

</forms>

</authentication>

<sessionState mode="InProc" cookieless="false" timeout="20" />