【发布时间】:2009-06-04 23:46:39
【问题描述】:
我有一个 Web 应用程序,它使用会话 cookie 来保持用户的登录状态。当他们登录时,系统会生成一个 GUID,它与数据库中的用户记录相关联。 GUID 然后存储在 cookie 中,以便在每次加载页面时读取它并根据数据库条目进行检查。
设置cookie的代码很简单。
Response.Cookies("UserSession")("ID") = vsSessionCookie
Response.Cookies("UserSession").path = "/"
尽管该系统已使用多年,但新客户已开始抱怨出现错误。当我们在错误发生时记录有关错误的信息(包括 cookie)时,我看到会话 cookie 根本不再存在。查看代码确实表明,如果会话 cookie 走动,应用程序会出错。
请注意,应用程序使用的具有到期日期的持久性 cookie 会保留。
我知道它应该更优雅地处理这个问题,但我感到困惑的问题是什么可能导致会话 cookie 消失。这不是用户在一段时间内不活动的情况,因为他们声称这是在他们使用系统时随机发生的。不幸的是,它们并没有更具体,但在一种情况下,我发现它发生在他们在系统中运行报告之后。此报告显示在一个新的浏览器窗口中(使用 Window.Open 在 JavaScript 中打开),因此看起来关闭此窗口会杀死原始窗口中的会话 cookie。
该系统(很遗憾)仅在 IE 中有效,但我找不到任何会导致此行为的设置,并且它对许多其他客户端都有效。
是否有可能导致这种行为的设置?为什么它应该对某些客户有效,而对其他客户无效?
也许它与关闭窗口无关,并且其他一些进程正在清除会话中的会话cookie,但是什么?
这么多问题....抱歉,但如果有人对此情况有任何经验,那将有很大帮助!
对于信息,Web 系统是用 ASP.Net 编写的。还有一个用经典 ASP 编写的系统对客户端也有同样的影响,所以我不认为 Web 系统本身有问题。
【问题讨论】:
标签: internet-explorer cookies session