关闭浏览器后,要保留Cookie,需要执行哪些确切步骤?目前,我有:
createPersistentCookie
在true
事件上设置为LoggedIn
。 true
的表单滑动到期时间。 只要浏览器处于打开状态,用户就将保持登录状态,但是一旦关闭浏览器,则无论多长时间,用户都需要再次登录。我想念什么?
编辑:
我浏览了marapet指出的文章(请参阅下面的评论),这使我对票证是否确实具有IsPersistent标志(确实如此)感兴趣。解密的票证如下所示:
System.Web.Security.FormsAuthentication.Decrypt(Request.Cookies[System.Web.Security.FormsAuthentication.FormsCookieName].Value)
{System.Web.Security.FormsAuthenticationTicket}
CookiePath: "/"
Expiration: {19/08/2010 17:27:14}
Expired: false
IsPersistent: true
IssueDate: {19/07/2010 17:27:14}
Name: "alex"
UserData: ""
Version: 2
所有详细信息都是正确的,并且与我在LoggedIn事件中设置的详细信息相对应。我可以直接从cookie中检索的cookie值更多,与此相同。但是,一旦我关闭浏览器,cookie就会丢失。但是,我注意到的是,出于某些原因,载有票证的cookie的日期已重置。首先,我无法覆盖web.config中的设置,因此在LoggedIn事件结束时,它的Expires属性是发布日期后的4000分钟,而不是我以编程方式设置的一个月。然后在页面加载Cookie后,我使用FormsAuthentication.FormsCookieName检索的Expires属性为01/01/0001。我想也许这就是问题所在?任何想法将不胜感激。
编辑#2:
我正在更改标题和标签以包括 session ,因为事实证明这与问题/解决方案有关
最佳答案
因此,我最终找到了解决方案。事实证明,身份验证cookie并不是问题所在(正确保留了它,或者如果处理程序未删除它,而是错误地确定用户未根据进行登录,那么身份验证cookie可能会出现问题。缺少的 session )。问题是 session cookie丢失或没有正确识别。因此,解决方法是在登录过程中手动添加 session cookie,如下所示:
HttpCookie authCookie = new HttpCookie("ASP.NET_SessionId", Session.SessionID);
authCookie.Domain = ".mydomain.com";
authCookie.Expires = DateTime.Now.AddMonths(1);
Response.Cookies.Add(authCookie);
现在,当浏览器再次打开时,将正确识别 session 并恢复用户 session 。
关于asp.net - 关闭浏览器后删除身份验证/ session cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3102241/