会话如何使用Weblogic 12 c-关闭浏览器似乎会使会话或cookie无效



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

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

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

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

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

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

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

注意:未选中关闭浏览器时清除浏览器缓存。此外,我们不会在浏览器关闭时破坏会话(没有什么新奇的)

这怎么可能?我是不是错过了什么

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

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

提前谢谢。

Browser关闭将删除JSESSIONID cookie。

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

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

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

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

我敢打赌,你的开发人员工具窗口是在一个新窗口中打开的,而当你关闭浏览器时,这个窗口并没有关闭。这将阻止删除JSESSIOID。

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

最新更新