在做网站登录和退出时,发现退出登录后,点击浏览器上的回退,仍可以回到登录后的页面,而且状态是已经登录。
在退出时已经s通过ession.removeAttribute("user");移除了session,但是点击浏览器上的回退,user还存在session,
是缓存的原因吗?还是其他?

解决方案 »

  1.   

    存储在 Session 对象中的信息在会话及会话作用域内有效
      

  2.   

    但是我在退出的时候,已经移除了session的user,怎么后退的时候,还有值?
      

  3.   

    个人感觉应该是缓存,你可以在回退到的那个页经行操作,提交请求,看user是否存在
      

  4.   

    应该是你没有验证是否登陆吧。后退时回到了前一页面,但session应该是不存在了的。你加一个过滤器判断有没登陆。
      

  5.   

    你测试一下,在ession.removeAttribute("user");后再get一下session看是否被移除。
      

  6.   

    我同样遇到过此类问题 我想着应该是缓存在浏览器中的静态页面的内容   你试试在关闭浏览器时 清除一下缓存 然后重新打开浏览器 访问此网页试试  我要强调的是 session.remove()这个方法是没有错的 简单点的方法是 你在地址栏中重新输入你要访问的网址 按回车试试还会出现此问题吗
      

  7.   


    HttpSession session = request.getSession();
    session.removeAttribute("user");
    User user=(User)session.getAttribute("user");在移除user后,这里的user是null
    但是在后退后,刷新在过滤器发现user是有值的。
    这是怎么回事?
      

  8.   

    flush()下下行不
    或者直接给个null
    有时候remove不起作用
      

  9.   

    看配置文件里面的配置怎么样spring
      

  10.   

    是起作用了,在调试的时候action方法里
    HttpSession session = request.getSession();
    session.removeAttribute("user");
    User user=(User)session.getAttribute("user");
    这时候看到user是null;但是在后退后刷新
    在过滤器却发现user还是有值的。很纠结啊
      

  11.   


    如果你能确认退出登录时,在session中移除了用户信息。并且页面代码“已登录”是根据session信息判断输出的。 那你可以删除一下浏览器的缓存,再试试。
    如果还不行,请先看看代码是否有问题。
      

  12.   

    通常情况下把session的熟悉移除,在页面再判断一下是否为空就可以的!有可能是缓冲也有可能是你的代码问题!要是不行,session.invalidate();如果这个时候开可以,就是你的判断出问题了!
      

  13.   

    代码是没有问题的,
    页面上这样<meta http-equiv="pragma" content="no-cache">
    应该是没缓存了吧