我使用Shiro框架进行身份验证。
问题是:当我关闭Chrome浏览器并再次打开它时,我仍然可以访问受保护的网址。如果我手动删除 jsessionid cookie一切正常,则禁止访问受保护的URL。在jsessionid的设置中,我看到:过期:浏览会话结束时。所以它应该过期,但事实并非如此。我也在firefox中进行了这个操作,没有那个问题。我甚至不知道调查的方式。
P.S。我不使用shiro remember-me功能。但是,无论如何,在使用时,Shiro会创建另一个cookie(名为rememberMe)。
答案 0 :(得分:4)
这是Chrome上的已知行为。与Apache Shiro无关。这是链接:
https://productforums.google.com/forum/#!topic/chrome/9l-gKYIUg50/discussion
认为Google已将此标记为WONTFIX,因此我们很可能不得不接受这一点。为了解决这个问题,我将max-age设置为某个可接受的值,以便FF和Chrome可以具有相同的行为。否则,当窗口关闭时,FF会将我关闭,Chrome可能会继续保持会话的长度。
另一种方法是在Shiro中触发会话验证以收集Shiro中所有过期的会话并使其无效。这样,任何尝试使用过期会话登录的客户端都将被告知。此时,您可以选择将用户重定向到登录页面。