asp.net – 浏览器关闭后的身份验证/会话cookie删除

前端之家收集整理的这篇文章主要介绍了asp.net – 浏览器关闭后的身份验证/会话cookie删除前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
浏览器关闭后,Cookie需要保留哪些具体步骤?现在我有:

> 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属性.我想也许这是问题在哪里?任何想法都不胜感激.

编辑#2:
我正在更改标题标签包括会话,因为它原来与问题/解决方案相关

解决方法

所以我找到了解决方案,最终.事实证明,认证cookie不是这样的问题(它保留正确,或者如果处理程序没有删除它,则错误地决定用户没有登录,基于缺少的会话).问题是Session Cookie丢失了,或者没有被正确识别.所以修复是在登录时手动添加会话cookie,如下所示:
HttpCookie authCookie = new HttpCookie("ASP.NET_SessionId",Session.SessionID);
authCookie.Domain = ".mydomain.com";
authCookie.Expires = DateTime.Now.AddMonths(1);
Response.Cookies.Add(authCookie);

现在当浏览器再次打开时,会话被正确识别,用户会话恢复.

猜你在找的asp.Net相关文章