Subject subject = SecurityUtils.getSubject();
System.out.println(subject.isAuthenticated()); //true
subject.logout(); //
System.out.println(subject.isAuthenticated()); //false
登出之后subject.isAuthenticated() 是false,根据shiro 官方说法,在这之后session 就已经删除了,然后重定向到另一个网页过程就结束了。
我遇到的问题是登出之后在地址栏输入登录后的地址还是能够访问进去,可以进入到页面中,但是不能进行业务操作,刷新一下就退出到 login 页面了。我之前以为 subject.logout 之后没有删除session,后来验证了,验证结果如下,在正常 subject.login() 后浏览器会产生2个cookie,一个是JSESSIONID,一个是rememberMe(这个是shiro的机制),当我 subject.logout() 后这2个cookie 就已经被浏览器删除掉了,可见浏览器上的cookie是没有了的,那,当我在地址栏键入登录后的网址,那个页面是从哪里读取的呢?好晕啊
页面上我写了这些:
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache,must-revalidate">
<meta http-equiv="Expires" content="0">这些事能保证页面上删除缓存的