我目前正在JSF中实现一种"自动登录"机制,请参阅
Cookie最大年龄始终-1
我测试了以下场景:
用户登录时不需要"记住我",然后直接关闭浏览器而不单击注销(如果单击注销,cookie的maxAge将设置为0)。稍后,如果用户再次加载页面,在过滤器中,cookie会出现在请求中(正常,因为关闭浏览器时cookie maxAge不会更改为0),并且用户会自动登录,这不是我想要的。
有办法解决这个问题吗?cookie和会话之间的关系是什么?我使用会话范围。据我所知,当浏览器关闭时,会话不会被破坏,这取决于服务器的决定。因此,我不能使用@PreDestroy。我也不能使用Jquery.unload,因为用户也只能关闭选项卡,而不能关闭浏览器。同样在我的应用程序中,可以同时打开几个选项卡。。。
有什么建议吗?
您似乎希望cookie与打开的浏览器实例一样有效。也就是说,你希望cookie和浏览器会话一样长。
只要给它一个最大年龄为-1
的会话cookie。cookie将与浏览器实例一样长。
关于HttpSession
和cookie之间的关系,请参阅servlet是如何工作的?实例化、会话、共享变量和多线程。关键区别在于HttpSession
还有一个服务器管理的超时。