关闭浏览器时cookie没有被清除

Cookie is not cleared when closing the browser

我目前正在 JSF 中实现一个 "auto-login" 机制,请参阅

我测试了以下场景:

用户登录后没有"remember me",没有点击退出直接关闭浏览器(如果点击退出,cookie的maxAge会被设置为0)。之后,如果用户再次加载页面,在过滤器中,请求中存在cookie(正常,因为关闭浏览器时cookie maxAge没有更改为0),用户自动登录,这不是我想要什么。

有办法解决吗? cookie和session是什么关系?我使用会话范围。据我所知,浏览器关闭时会话不会被破坏,这取决于服务器的决定。因此,我不能使用@PreDestroy。我也不能使用 Jquery.unload,因为用户也只能关闭选项卡,不能关闭浏览器。同样在我的应用程序中,可以同时打开多个选项卡...

有什么建议吗?

您似乎希望 cookie 与打开的浏览器实例一样长。 IE。您希望 cookie 与浏览器会话一样长。

只需将最大年龄设置为 -1,使其成为会话 cookie。 cookie 将与浏览器实例一样长。

关于HttpSession与cookies的关系,请前往How do servlets work? Instantiation, sessions, shared variables and multithreading。主要区别在于 HttpSession 也有一个服务器管理的超时。