用户登录串号问题!!!

CoCoAve 发布于 2013/07/30 15:31
阅读 2K+
收藏 2

环境:nginx + tomcat 7

目前出现二种情况,

1、同一台电脑,A用户登录到网站,显示的是B用户,强制刷新(Ctrl + F5),恢复到A用户信息,请求其它页面,可能再次出现B用户信息

2、不同电脑,A用户登录,点击某些页面会出现 B、C、D...等用户信息

第一种,电信网络,对方内部用了http代理缓存加速,

第二种,移动宽带,对方说内部没有做加速缓存,联系过移动工程师,也说没用做缓存加速!! 很郁闷。

如果目前定位到代理服务器缓存问题,在不改变客户端环境的前提下,各位有没好的解决方法

加载中
0
雾海树妖
雾海树妖
会串号情况应该是cookie没清理的原因吧。。设置cookie有效期,或者干脆直接不用cookie, 跟session绑定来验证身份。。
CoCoAve
CoCoAve
目前用的是 session验证!
0
华兹格
华兹格
Mark,我以前遇到过苏宁系统出现这样的问题,登录后显示是别人的信息。不知道产生这个问题的原因。 
CoCoAve
CoCoAve
是的,网上搜索一下,同类问题蛮多的,对于我们这类一台电脑多人共用的客户,问题很容易暴露出来。
0
雾海树妖
雾海树妖
那就是你逻辑错误了
CoCoAve
CoCoAve
逻辑错误的概率很低,目前出问题的都是整个局域网,而且是少数,公司内部没有出现过这类问题。
0
leo108
leo108

不知道各位发现没有,在OSC上问串号问题的都是用JAVA写的

PS我真的不是在黑JAVA

CoCoAve
CoCoAve
哈哈,学艺不精,见笑了
0
Mr_Zhou
Mr_Zhou

Mark 以前遇到过 没管 期待解决办法

貌似红薯说过做web第一步就是干掉session

CoCoAve
CoCoAve
程序session除了.set 就是.get,没做任何处理。今天也尝试把session 改成cookie ,但整个框架调整太大,还是想找找有没解决方案。
0
sxgkwei
sxgkwei

我只想说,写的代码逻辑有问题。看到楼上有些说法感觉session被责怪的莫名其妙。

我的建议就是,去检查你们的代码逻辑,我敢确定是你们项目代码有问题。如果你把session保存在一个spring管理的bean里面,同时对spring管理的bean默认都是单例模式却没有觉悟,那。。。。而且顺便提一句,时下流行的springMVC中的Control控制层,自然也是单例的。

当然,管你用没用spring,只要单例存在的地方,如果写代码的人总没有高度的觉悟,那。。。。

CoCoAve
CoCoAve
嗯,肯定能解决,要不java开发的这么多大型站,可怎么办?出现这种情况的客户来看,整个局域网会出现,所以有些怀疑缓存,当然,他们网管也说了一句比较实在的话:“我们用了这么久了http代理加速,就你们网站会出这问题”,所以感觉还是代码上可以解决,不知道如何下手。
0
sxgkwei
sxgkwei

在上面的说法上再补充一下。如果你在全局保持过用户对象,或者在spring的单例bean中保持过,那么如果用户退出了,你就要去把这个用户对象设置为null,而不是退出的时候仅仅把sesssion中的用户设置成空。

如果差了这步,并且在获取用户对象时,写的在session中找到用户,才去设置到全局用户持有量上,如果没有找到,就不管此持有量,那么这个持有量就会一直持有着登录时的用户对象,然后你到处的直接用这个持有量上的用户,悲剧可想而知。。。

CoCoAve
CoCoAve
回复 @sxgkwei : com.opensymphony.xwork2.ActionContext
sxgkwei
sxgkwei
回复 @CoCoAve : 奇怪的东西,java的httpSession中,应该没有remove和get方法吧。你这是什么情况呢
CoCoAve
CoCoAve
session.setAttribute("user", user); //登录ActionContext.getContext().getSession().remove("user"); //退出 ActionContext.getContext().getSession().get("user") //获取 框架 ssh
0
antipro
antipro
明显要用session.invalidate();吧,remove有什么用?
CoCoAve
CoCoAve
写法上不觉得有什么问题,可以去了解下struts2 com.opensymphony.xwork2.ActionContext
0
antipro
antipro
我没有用过struts2,Map的remove,只是把HttpSession移出去而已,并不代表Session被销毁。
CoCoAve
CoCoAve
session.invalidate(); 效果还是一样的,
CoCoAve
CoCoAve
那我用session销毁试试看,出现部分用户情况,很费解!
0
CoCoAve
CoCoAve

看来只能改成cookie试下,

返回顶部
顶部