我已经设置了我的第一个登录系统并且已经关注:
https://stackoverflow.com/a/10524305
存储一些额外的数据,而不必多次访问数据库。
我遇到的问题是,当Cookie /故障单过期时,仍然会看到用户已通过身份验证?
例如:
HttpCookie authCookie = Request.Cookies[FormsAuthentication.FormsCookieName];
authCookie为null,但
HttpContext.Current.User.Identity.IsAuthenticated
继续返回true。
如果Cookie已过期,有没有办法强制注销?
谢谢!
答案 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" />