当浏览器关闭时过期 ASPXAUTH Cookie

3
我正在使用以下代码创建一个ASPXAUTH cookie:
var authTicket = new FormsAuthenticationTicket(2, model.Name, DateTime.Now, DateTime.Now.AddMinutes(ConfigSettings.SessionTimeout),
                    false, result.UniqueId.ToString());

                var authCookie = new HttpCookie(FormsAuthentication.FormsCookieName,
                    FormsAuthentication.Encrypt(authTicket))
                {
                    HttpOnly = true,
                    Expires = authTicket.Expiration                    
                };

                Response.AppendCookie(authCookie);

当用户关闭浏览器(包括IE和Chrome)并重新登录时,会话仍然处于活动状态,APSXAUTH cookie未过期。我已将其设置为非持久性。我也确定所有浏览器实例都已关闭。
我错过了什么?
1个回答

3

如果您手动设置了Expires属性,浏览器将在客户端创建一个持久化cookie。

只需要不设置任何值,在那一行注释掉即可。这将创建一个与浏览器打开时间相同的cookie。

请注意,通常情况下,即使用户关闭了选项卡,cookie 仍然存在。当浏览器进程关闭并重新启动时,cookie 才会消失。


我遇到了同样的问题。我的FormsAuthenticationTicket是通过[using System.Web.Security]生成的,因此我不能仅仅注释掉那一行代码(否则该类将出错)。是否有其他方法可以不设置APSXAUTH的过期时间? - 楊宇恩

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接