项目中出现这样的问题:一个用户输入自己的用户名和密码登录后却看到的是别人的信息,数据库里的信息是正确的,是通过vpn访问的,请问是什么原因?

解决方案 »

  1.   

    信息从哪读出来的?
    缓存?库?如果是库,确认执行了select操作了么?
      

  2.   

    使用的浏览器session缓存问题...
      

  3.   

    就算clear或set都不行,这是浏览器的问题...
      

  4.   

    这个啊,  CSDN不就是这样吗????
      

  5.   

    是vpn的问题,因为是通过vpn访问的用户会出现这些问题,但是其他的是正常的,但是有没有哪位高人知道怎么解决呢?
      

  6.   

    csdn也经常是的
    我也经常看到别人的博客通知
      

  7.   

    以前也遇到过这样的问题,好像听人说过这是“Session穿透”,好像是听一个培训老师说的,一软件公司为别人做软件出现了这种问题,差点没被别人索赔,还好问题解决了,不过没说怎么解决的。
    以前项目中也遇到过类似的问题,可能是因为浏览器中缓存的问题,当时项目测试,吓了一跳。
    不知道在session中存放数据前先用一下request.getSession().invalidate()方法使session失效再用request.getSession()获得新的session会不会有用,以前时间紧,也就没细研究,直接过去了,不过我感觉如果要改用这种方法应该可行。
    这种情况确实不太容易发现,很少碰见这种情况。故意让它出现还真不容易。希望上面的方式能解决问题。
      

  8.   


    同意这个,某些访问量大的,容易这样。
    后面我的做法就是,session里面保存的user object信息尽量少,有时甚至就是个name/id,需要的时候再去查找。
    不要一个user里面有name password phone email等大量信息
      

  9.   

    你用到servlet了吗?servlet就是一个单实例,多线程的形式。所以,你不要把登陆的进去的信息做为servlet的属性了。这样是线程不安全的。
      

  10.   

    你不能DEBUG看吗?DEBUG读出来的数据与WEB显示数据不一样,就是WEB那边有问题.
    要不你抓HTTP包看看.
      

  11.   

    有没有用 apache 的 负责均衡? 是不是html 也存在缓存了?
      

  12.   

    用到servlet了,不过这个项目只允许一个人有增删改的权限,这样应该没有线程问题吧
      

  13.   

    关键是客户那边不让我们看到正式数据库中的数据,而且这个问题是上线后才发生的,而且他们每个人都是通过vpn登录的,我们没有vpn的账号,客户也不给我们创建,所以本地没法debug啊