English 中文(简体)
regenerateExpiredSessionId无法按预期工作
原标题:
  • 时间:2008-12-24 22:09:41
  •  标签:

据MSDN的理解,regenerateExpiredSessionId="true"指定当客户端指定一个过期的会话ID时,会重新发行会话ID。然而,这似乎并没有按照描述的方式工作。

假设您有一个以下配置的应用程序:

<sessionState 
     cookieless="AutoDetect" 
     regenerateExpiredSessionId="true" />

还有另一个地方,你有一个链接到该应用程序中包含过期会话ID的页面:

<p><a href="http://localhost/SessionStateTest/(S(3gxng155isp0ocvhveoklnqe))/Default.aspx">Here is a link!</a></p>

如果未启用cookie的浏览器点击此链接,则不会重新发出会话ID。它正在从URL中回收过期的ID,并使用这个旧ID创建新会话。

当然,如果几个没有 cookie 的浏览器同时点击该链接,则它们都共享同一过期的会话 ID,这显然是一个安全问题。

“regenerateExpiredSessionId="true"不应该防止用户无意中共享相同的会话状态吗?如果是这样,那么为什么框架在这种情况下没有按预期生成新的会话ID?”

问题回答

你确定你的会话实际上正在过期吗?

如果您正在使用表单身份验证,则其票证的过期时间可能会与会话不同。(当您将滑动过期时间混合其中时,就更加令人困惑了)

启用无 cookie 的情况下,请检查 URL,当您认为会话已过期时...如果登录后 URL 的第二部分 "F(xydUI....)" 发生变化,但 "S(dysXy...)" 保持不变,您就知道您的会话正在续订,尚未完全过期。

希望这能帮到你。





相关问题
热门标签