同一个浏览器登录多个用户,session会覆盖,请问如果解决,解决后散我所有的分,谢谢!

curieloveyou 2008-08-06 01:07:19
最近遇到棘手问题,就是同一个浏览器窗口下,多个用户同时登录我们的系统,会发生session覆盖问题,请问,sessionid是以浏览器为单位的吗,是不是只要浏览器没关闭,sessionid就一样呀?
还有利用ajax请求页面是不是会重新启动一个新的会话呀,覆盖掉以前的?
请大师们解决,非常感谢,解决后散所有分。
...全文
4044 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
liu4626846 2012-05-04
  • 打赏
  • 举报
回复
IE6是每新开一个窗口一个session,基本一定不会串
IE7是同一个窗口里面多个Tab页共享一个Session,同窗口的会串
IE8是所有窗口所有标签Tab页共享一个session,除非是用那个文件菜单新开会话打开窗口则独立session
FireFox和Chrome则缺省就是所有窗口所有Tab共享一个Session。

所以要解决这个不同帐户在同一客户端使用同种浏览器同时登录的问题很困难。综合网上大家讨论的方案中,很多不靠谱。但有2中方案应该还走得同:
第一:泛域名解析。这个需要web服务器(比如apache)来辅助配置。
第二:不同帐户共用一个session,将信息以<key,value>形式放入session,然后所有的请求都加上userid参数,所有从session中取数据出来都通过get****ByUserId。这种实现对现有框架改动较大,而且不仅仅是放在session中的用户信息需要根据byuserid来提取而是所有的会话里面的信息都要byuserid的来弄。实在有点杀鸡取卵,当作大,收益小。

鉴于上述,G4平台目前不支持不同帐户在同一客户端使用同种浏览器同时登录系统。看以后是否有更好点的解决方案。如果的确有这种需求可以先退出已登录账户在登入新账户或者打开两个不同的浏览器登录不同账户。
-----------------------------------------------------------------------------------------------------

--------------------------------------------------------------------------------
在V1.2.2版本中修正了由于浏览器自身机制多个窗口或者浏览器标签页共享session引起的同一个客户端使用同种浏览器同时以不同帐户登录造成session覆盖、会话信息串位的bug。解决办法:禁止不同账户同时在同一客户端同种浏览器登录,在某些特殊情况下已经登录2个账户的时候禁止前一个账户再发出请求并将其重定向到登录页面(G4用户.dqh提交)
fan7421436 2010-10-25
  • 打赏
  • 举报
回复
请做过这个题目的人,实现过的人 解决问题
gekui362994894 2009-03-02
  • 打赏
  • 举报
回复
cookieless = true
xueyou98 2008-08-07
  • 打赏
  • 举报
回复
session不与服务器端矛盾吧?

各个客户端的session只是保存在客户端电脑上而已

具体的session作用时间,要看你的cookies设置.
yyjava 2008-08-07
  • 打赏
  • 举报
回复
使用集合
curieloveyou 2008-08-07
  • 打赏
  • 举报
回复
to feihulii :帮忙问问哈,俺现在只是暂时性的限制不能同一个浏览器登录多个用户。
to gzty:这个方法考虑了下,觉得页面太多,要多加个传递参数是个浩大的工程,很有可能出错。所以放弃了。
fxs_2008 2008-08-07
  • 打赏
  • 举报
回复
如果是用的PHP,是会被盖的,因为session用的是cookie机制,
但如果打开多个IE窗口,不会被盖
feihulii 2008-08-06
  • 打赏
  • 举报
回复
session数组 好像不大行吧

sessionid被覆盖了 session储存的再好 找不到啊

就像你进门的钥匙丢了 即使你房间里有开启n个房门的钥匙 甚至有开启本身的钥匙
可这有用吗

客户端 去服务器取session凭的是储存在cookie中的seeionid
sessionid被覆盖掉了 那........?
jacklinchen 2008-08-06
  • 打赏
  • 举报
回复
可以利用session数组来保存用户信息,这样就不会被覆盖了
feihulii 2008-08-06
  • 打赏
  • 举报
回复
哎 前段时间有位同事刚解决这个问题 明天帮忙问 他应该是注册了 当前Page
而且解决了cookie覆盖问题 其实SESSION覆盖真正的原因是cookie中sessionid的覆盖
本身session内容在服务器端并没有变化 只是客户端sessionid覆盖了 就找不到session了
有点类似于对象引用 引用指向了另个托管堆 原有的托管堆就成盲区了
tony-杨 2008-08-06
  • 打赏
  • 举报
回复
把SESSION的用户信息做成数组/列表形式,用一串相关信息MD5后唯一的UID区别
然后不管是GET还是POST传参[AJAX也用这两个的]时均传递该UID,服务器端验证后得到相关操作权限
不过这样貌似会有安全问题啊

坐起小板凳期待唠叨老大、辉等等的大牛来解答
neo_yoho 2008-08-06
  • 打赏
  • 举报
回复
没试过。。
ly8199 2008-08-06
  • 打赏
  • 举报
回复
单纯用 SESSION 应该没办法解决。
michaelfai 2008-08-06
  • 打赏
  • 举报
回复
session中保存List<User>不就可以了吗?
fejay 2008-08-06
  • 打赏
  • 举报
回复
帮顶,不会

52,793

社区成员

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

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