登出时候使用invalidate()销毁session,然后跳转到登录页面,然后点击浏览器回退按钮回到主页手动刷新页面,然后看到之前保存在session中的用户名又出来了,为何?很不理解,登出时候不是已经清除了吗,我试了remove也不行,求解?
并且还可以进行增删改查操作,why
有做登录拦截吗
如果是配合@SessionAttributes注解使用 必须使用SessionStatus.setComplete();来清除。它只清除@SessionAttributes的session,不会清除HttpSession的数据:
例如
public String outLogin(HttpSession session,SessionStatus sessionStatus){
session.removeAttribute(xxx);//我这里是先取出httpsession中的user属性
session.invalidate(); //然后是让httpsession失效
sessionStatus.setComplete();//最后是调用sessionStatus方法
return "index";
}
1.拦截器判断session可能有误:就是后端可能清除了session,但是浏览器保存了,回退,然后还是发送有session的,然后拦截器条件判断出错还是放行了
2.可能后端session清除失败,建议清除之后,遍历一下session看看是否清除