关闭浏览器时不会清除Cookie

时间:2016-03-29 09:25:26

标签: jsf cookies session-scope

我目前正在JSF中实现“自动登录”机制,请参阅

Cookie maxAge always -1

我测试了以下场景:

用户在没有“记住我”的情况下登录,然后直接关闭浏览器而不单击注销(如果单击注销,则cookie的maxAge将设置为0)。稍后,如果用户再次加载页面,则在过滤器中,cookie将出现在请求中(正常,因为关闭浏览器时cookie maxAge未更改为0),并且用户自动登录,这不是我想要的是什么。

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

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

只要打开的浏览器实例,您似乎希望cookie处于活动状态。即只要浏览器会话,你就希望cookie能够存在。

通过提供-1的最大年龄,将其设为会话Cookie。只要浏览器实例,cookie就会存在。

关于HttpSession和Cookie之间的关系,请转到How do servlets work? Instantiation, sessions, shared variables and multithreading。关键的区别在于HttpSession还有服务器管理的超时。