Chrome关闭后,Jsessionid cookie不会过期

我使用Shiro框架进行身份validation。

问题是:当我关闭Chrome浏览器并再次打开它时,我仍然可以访问受保护的URL。 如果我手动删除jsessionid cookie一切正常,则禁止访问受保护的URL。 在jsessionid的设置中,我看到: Expires:浏览会话结束时 。 所以它应该过期,但事实并非如此。 我也在firefox中进行了这个操作,没有那个问题。 我甚至不知道调查的方式。

PS我不使用shiro remember-mefunction。 但是,无论如何,在使用时,Shiro会创建另一个cookie(名为rememberMe)。

这是Chrome上的已知行为。 与Apache Shiro无关。 链接在这里:

https://productforums.google.com/forum/#!topic/chrome/9l-gKYIUg50/discussion

认为Google已将此标记为WONTFIX,因此我们很可能不得不忍受这种情况。 为了解决这个问题,我将max-age设置为某个可接受的值,以便FF和Chrome可以具有相同的行为。 否则,当窗口关闭时FF会将我关闭,Chrome可能会继续保持会话的长度。

另一种方法是在Shiro中触发会话validation以收集Shiro中所有过期的会话并使其无效。 这样,任何尝试使用过期会话登录的客户端都将被告知。 此时,您可以选择将用户重定向到登录页面。