【问题标题】:How session works with Weblogic 12 c - Closing browser seems to invalidate the session or the cookie会话如何与 Weblogic 12 c 一起工作 - 关闭浏览器似乎使会话或 cookie 无效
【发布时间】:2023-03-09 12:19:01
【问题描述】:

在我们的 weblogic java ee 应用程序中,<cookie-max-age-secs> 参数设置为 -1(不过期)

weblogic <timeout-sec> 参数设置为 1800 秒(30 分钟)

  1. 用户登录,然后关闭浏览器(X 关闭)。

  2. 用户重新打开浏览器(几秒钟后)并单击 以前的地址。

预期行为:浏览器发送 cookie(未过期),Weblogic 识别 cookie ID,该 ID 仍与会话相关联,让用户自动登录应用程序

实际行为:用户会收到登录屏幕提示,必须重新登录。

似乎浏览器在浏览器期间使 cookie 无效(X 关闭)并且没有将其发送到应用程序。

注意:关闭浏览器时清除浏览器缓存未被选中。此外,我们不会在浏览器关闭时销毁会话(没有什么花哨的)

这怎么可能?我在这里错过了什么吗?

让事情变得更加困难:如果您处于开发人员模式 (F12) 并且在您关闭 (x close) 并重新打开时捕获请求(网络选项卡)您将自动登录。强>

完全相同的测试,但行为不同。怎么可能?

提前致谢。

【问题讨论】:

    标签: java session-cookies weblogic12c


    【解决方案1】:

    浏览器关闭会删除 JSESSIONID cookie。

    实际行为期望/预期行为。 这是因为 JSESSION ID 在浏览器关闭时被浏览器删除

    因此,当您重新打开浏览器并向应用程序发送请求时,浏览器不会向 Web 应用程序发送任何 cookie (NO JSESSIONID)。因此,系统会提示您登录屏幕。

    注意:会话对象仍在内存中,但此时无法访问它。达到超时后的一段时间(您的情况是 30 分钟),低优先级线程将删除会话对象。

    现在让我们考虑一下奇怪的情况(开发者工具打开):

    我敢打赌,您的开发人员工具窗口会在新窗口中打开,并且当您关闭浏览器时该窗口不会关闭。这可以防止删除 JSESSIOID。

    因此,在这种情况下,您的浏览器会在请求标头中发送 JSESSIOID cookie,并且由于我们之前说过您的会话对象仍在内存中,因此 weblogic 接受它。

    【讨论】:

      猜你喜欢
      • 2011-07-20
      • 2011-04-21
      • 2020-08-23
      • 2012-03-22
      • 1970-01-01
      • 2015-07-03
      • 2013-11-29
      • 2013-08-11
      • 2014-09-04
      相关资源
      最近更新 更多