> createPersistentCookie在LoggedIn事件中设置为true.
> MachineKey指定.
>窗体滑动过期设置为true.
只要浏览器打开,用户将保持登录状态,但一旦关闭浏览器,并且无需多长时间,用户将需要重新登录.我失踪了什么
编辑:
我经历了马拉布塔指出的文章(见下面的评论),这使我对票是否确实有IsPersistent标志感兴趣.解密的票证如下所示:
System.Web.Security.FormsAuthentication.Decrypt(Request.Cookies时[System.Web.Security.FormsAuthentication.FormsCookieName].价值)
{} System.Web.Security.FormsAuthenticationTicket
CookiePath:“/”
到期日:{19/08/2010 17:27:14}
已过期:假
IsPersistent:true
IssueDate:{19/07/2010 17:27:14}
名称:“亚历克斯”
用户数据: ””
版本:2
所有的细节是正确的,对应于我在LoggedIn事件中设置的.我可以直接从cookie中获取更多的cookie值,与此相同.然而,一旦关闭浏览器,cookie就会丢失.
然而,我注意到的是,由于某种原因,携带车票的cookie的日期重置.首先,我无法覆盖web.config中的设置,所以在LoggedIn事件结束时,Expires属性是发布日期后的4000分钟,而不是我以编程方式设置的一个月.然后在页面加载后,我使用FormsAuthentication.FormsCookieName检索的Cookie具有01/01/0001的Expires属性.我想也许这是问题在哪里?任何想法都不胜感激.
解决方法
HttpCookie authCookie = new HttpCookie("ASP.NET_SessionId",Session.SessionID); authCookie.Domain = ".mydomain.com"; authCookie.Expires = DateTime.Now.AddMonths(1); Response.Cookies.Add(authCookie);
现在当浏览器再次打开时,会话被正确识别,用户会话恢复.