紧急!为何多用户同时登录出现session混乱问题?

lona 2008-04-15 09:06:41
tomcat4.1项目,很简单的一个java + servlet
登录
login.jsp->loginServlet->index.jsp

loginServlet中,如果登录成功,session.setAttribute("userinfo",userBean);
index.jsp中,UserBean userbean = (UserBean)session.getAttribute("userinfo");

我们开发没有问题,客户实际使用出现问题

多台电脑,同时访问系统,登录,
出现一定几率,20%左右,
后一个用户登录系统index.jsp显示的用户名/信息竟然是 别的电脑上 上一个登录用户的 用户名/信息,

两台机器为何登录的session会混了呢?
百思不得其解 ,还请高手帮忙解答。

ps:doPost函数中使用的HttpSession session = request.getSession();,所以作用域应该正确,
jsp只使用了session.getAttribute();
显示出错好像只在jsp中混乱,在servlet目前没有发现有混乱的现象。
...全文
2794 34 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
34 条回复
切换为时间正序
请发表友善的回复…
发表回复
luccili 2011-08-28
  • 打赏
  • 举报
回复
应该是把公有变量保存在session中了 ,我就遇到过这情况
班门弄斧 2011-04-21
  • 打赏
  • 举报
回复
关注一下,用IP或者MAC地址的方式只能适用于内网,对于公网的话估计不太可行

注:程序获取的MAC地址是获取的注册表的信息,也就是说,这个地址是可以更改的,而不是真正的网卡MAC地址
jason_yan83 2011-01-04
  • 打赏
  • 举报
回复
有最后结果么
杰森-李 2010-12-31
  • 打赏
  • 举报
回复
我也在受这个session混乱问题的困扰,那位大侠可以帮忙解决一下,感激不尽
minzexiang 2010-04-19
  • 打赏
  • 举报
回复
楼主的问题比我这个强多了。。我的是同一台电脑Session混乱。

同一台电脑上如果出现Session混乱改怎么办。。我是有N个页面需要同一个Sesssion保存的内容。用页面传值是很海量的工作。。。
ROBINAPOLLO 2008-04-15
  • 打赏
  • 举报
回复
学习了
自然80 2008-04-15
  • 打赏
  • 举报
回复
以前也遇到过这样的情况。如果程序没有问题。
有可能是网络的问题,比如,用wingate作代理,用代理的人,有可能是1个sesssion
a2048 2008-04-15
  • 打赏
  • 举报
回复
如果没有选择自动会出现象你说的情况。我以前也遇到过这样的问题。
lona 2008-04-15
  • 打赏
  • 举报
回复
回复19楼,

我明天去客户那里详细查看他们的ie设置,
你说的方法很有可能,我一定得去看看
lona 2008-04-15
  • 打赏
  • 举报
回复
回复18楼,
一切页面都是最简单的,没有做过缓存,
这里唯一可疑的地方就是cookies,
但是还没有理由说他有错误,
用户登录退出以后,是没有把session清理了,而是等回收机自动回收,
因为我不知道用户是用什么方式关闭浏览器,也可能直接alt+f4了,

我现在的解决方案是
1.看看客户是不是浏览器设置有错误,
2.我打算换到tomcat5.5去
a2048 2008-04-15
  • 打赏
  • 举报
回复
你是否看过客户电脑ie浏览器的internet选项-->internet临时文件里的设置是否没有选自动。
临远 2008-04-15
  • 打赏
  • 举报
回复
有问题的页面刷新一下就正常了?
那感觉还真是缓存的问题了。你后台有什么地方做了缓存吗?
聪头 2008-04-15
  • 打赏
  • 举报
回复
清空session测试
临远 2008-04-15
  • 打赏
  • 举报
回复
因为正常情况下session是不会冲突的。
我们遇到唯一一次互相影响的情况是用ThreadLocal保存session的时候忘记了清理。

排除session的情况,只能猜测是cookie的影响。每人一个电脑把cookie排除的话

那就怀疑你程序设计的问题了,是不是把公用变量保存到session中,要不就是数据隔离没搞好,让不同用户可以看到其他用户的信息了。

别抱怨了,自己开几个机器单步调试,看到什么情况下就会出问题。
lona 2008-04-15
  • 打赏
  • 举报
回复
回复14楼

此处跟进了,得到的信息100%不会有错误,
而且出错页面,刷新一下就显示正确了(不走库),确实是session的值的问题。
谢谢回复
tianyidan 2008-04-15
  • 打赏
  • 举报
回复
lz,当你提交登陆信息的时候,你跟进去看下,在:
// 获得用户信息,并存在Session中
ncuser = loginLogic.getUserInformation(userID, userPassword);
// 把取得的用户信息存到session中。
session.setAttribute("ncuser", ncuser);
这段代码中,看看你保存的信息登录信息到底是什么。

我觉得,在页面上NCUserBean ncuser = (NCUserBean) session.getAttribute("ncuser");应该不会出错。
lona 2008-04-15
  • 打赏
  • 举报
回复
12楼是回复9楼的信息

回10楼兄台,
你说的方法我等到客户那里去验证一下,
临时文件会导致session错误?总之,我还是去看一下,真的没有办法了我。
lona 2008-04-15
  • 打赏
  • 举报
回复
楼上兄弟,
cookie是保存再本地啊,
这些客户是每个用户一台电脑,所以我觉得应该不冲突啊
即使他保存了cookie,别人的电脑上登录,也和他这台电脑的cookie没有关系啊 。

cookie是用来保存用户登录的用户名和密码的,为了下次登录不用输入用户名和密码。

kilerven 2008-04-15
  • 打赏
  • 举报
回复
up 楼上。学习!
a2048 2008-04-15
  • 打赏
  • 举报
回复
看看客户电脑ie浏览器的internet选项-->internet临时文件里的设置是否没有选自动,如果没有选择自动会出现象你说的情况。我以前也遇到过这样的问题。
加载更多回复(14)

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧