[size=large]很抱歉问题这么模糊,因为我也不太确定是什么问题;详情如下:
用JAVA写了一个登陆,是根据用户角色不同分配栏目,系统管理员与普通用户所能操作的栏目不一样。
所以我把登陆用户的相关信息放入session中,登陆者的用户名,登陆者的角色(系统管理员、普通用户)。
系统管理员A登陆正常,退出后,用普通用户B登陆也是正常,退出再用系统管理员A登陆,却显示的仍然是
普通用户B的相关信息。
以上问题只在IE8浏览器中出现,FF、IE6、谷歌浏览器均没有出现此问题。
我也试着在退出时,让session失效,不过还是不好用。在退出时remove掉存入session中的值,
不过下次用这个用户登陆的时候,从session中取登陆用户的用户名却取不到了。
我在所有的页面中均加入了取消页面缓存的代码,可是还是存在问题。
请问各位,我应该如何解决此问题,百度了好久,始终无法解决,才来论坛提问,先谢谢各位![/size]
IE8 的session是共享的,网上找了一段,参考下
今天在开发中发现微软最近推出的IE8存在会话共享的问题,在之前版本,例如IE6或IE7,如果同时打开两个窗口会产生两个会话,彼此互不影响。但IE8中的情况截然不同,虽然可同时打开多个窗口,但他们共用了一个会话,开始原以为自己的程序有问题,原来是这个在作祟。
GOOGLE中找到了一些解决办法,可以借鉴:
用户通过菜单 File > New session 打开新窗口,或者使用命令行参数 iexplore.exe -nomerge 来打开IE。
[quote]系统管理员A登陆正常,退出后,用普通用户B登陆也是正常,退出再用系统管理员A登陆,却显示的仍然是普通用户B的相关信息。 [/quote]
建议你B登陆正常后,退出,清一下页面缓存,再用A登陆看看什么情况。
[quote]我先用B用户登陆,然后用A用户登陆,退出后再使用B用户登陆,出现的还是A用户的相关信息~三次登陆,浏览器不关闭![/quote]
A用户登陆后,清理过缓存,再用B用户登陆,还是A用户的相关信息?那就不是缓存问题了,页面也没有报错?只有IE8才有这个问题,那也不是后台代码的问题...纠结...
同学你这个是不是在退出的时候没有清理掉SESSION里面对应的用户信息?
如果是正常退出应该用程序清理掉SESSION里面的信息,然后在登陆的时候也就是填完用户名与密码后,应该重置SESSION的用户信息,即A登陆成功后,SESSION.setAttarbute("user_info",A);
如果是B登陆即SESSION.setAttarbute("user_info",B);这样的话,用同一个KEY值,在登陆成功后都重置用户信息,即例你正常退出没有清理SESSION的值.也不会出现重复!
[quote]同学你这个是不是在退出的时候没有清理掉SESSION里面对应的用户信息?
如果是正常退出应该用程序清理掉SESSION里面的信息,然后在登陆的时候也就是填完用户名与密码后,应该重置SESSION的用户信息,即A登陆成功后,SESSION.setAttarbute("user_info",A);
如果是B登陆即SESSION.setAttarbute("user_info",B);这样的话,用同一个KEY值,在登陆成功后都重置用户信息,即例你正常退出没有清理SESSION的值.也不会出现重复! [/quote]
是这个问题?不是吧...
缓存问题。。鉴定完毕....
[quote]
同学你这个是不是在退出的时候没有清理掉SESSION里面对应的用户信息?
如果是正常退出应该用程序清理掉SESSION里面的信息,然后在登陆的时候也就是填完用户名与密码后,应该重置SESSION的用户信息,即A登陆成功后,SESSION.setAttarbute("user_info",A);
如果是B登陆即SESSION.setAttarbute("user_info",B);这样的话,用同一个KEY值,在登陆成功后都重置用户信息,即例你正常退出没有清理SESSION的值.也不会出现重复
[/quote]
应该不会吧. 要是这个问题 其他游览器也不会正常的. 只有lz讲只有ie8有这样的问题.
ie8确实很恶心。 session和缓存机制都不一样. 个人觉得这样的问题 应该是缓存的问题. 设置页面不缓存试试
取消不行的话,你可以在页面设置一下当前的用户对应的session对象为null啊
session的话一个是url重写,一个是cookie的形式,url重写是不可能了,
你观察下cookie~~请求的时候是否带了缓存的cookie
工具->Internet选项->设置->检查网页的较版本,选每次访问页面时。
试一下 :oops:
我的IE8出现同样问题
浏览器版本问题
IE 7,8中选项卡是共session id的,你开个新窗口试过没?
应该在登录和退出时这样做才行:
登录:
session.setAttribute("login_id", lt.getId());
session.setAttribute("nickname", lt.getNickname());
退出:
session.removeAttribute("login_id");
session.removeAttribute("nickname");
我的也是在IE8 ,不会出现这种问题。