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

时间:2015-02-19 18:34:35

标签: java session-cookies weblogic12c

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

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

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

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

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

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

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

    注意:未选中浏览器关闭时清除浏览器缓存。此外,我们不会在浏览器关闭时破坏会话(没有像这样的花哨)

    这怎么可能?我在这里遗漏了什么?

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

    相同的测试但行为不同。怎么会这样?

    提前致谢。

1 个答案:

答案 0 :(得分:1)

浏览器关闭会删除JSESSIONID cookie。

实际行为期望/预期之一。 这是因为浏览器关闭时浏览器的已删除

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

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

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

我敢打赌,您的开发者工具窗口在新窗口中打开,关闭浏览器时此窗口未关闭。这样可以防止删除JSESSIOID。

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