日期:2014-05-18  浏览次数:20848 次

session多用户问题
基于多用户的系统中
我把用户在登录时的信息保存在session中,如
request.getSession().setAttribute( "user ",user);
当访问其它页面时,这些页面在从session中读出
以进行权限判断.
但现在有一个奇怪的问题,就是在其它的机器上登录另一个帐号时,刚才那个登录帐号也变成了后登录的这个帐号.
按理说,session是保存在客户端的,怎么会重了呢
在线等


------解决方案--------------------
按理说,session是保存在客户端的,怎么会重了呢

首先你说的这句话不对,session是保存在服务器端的,服务器会为每个客户创建一个session.

你遇到的这个问题,好像不会出现把,请把你整个流程说一下。
------解决方案--------------------
session的底层机制有两种
1、cookie,cookie中会有一个字段JSESSIONID来标示你这个会话,以从服务器内存中找到正确的session.
2、URL重写,就是把这个JSESSIONID写在URL请求参数里。
默认情况下是cookie机制。
你这种情况可能发生的一个原因就是JSESSIONID重复了,但这种事件的几率应该很小。
------解决方案--------------------
request.getSession().setAttribute( "user ",user);
为什么要使用request对象获得session?request用来上下页面传值。
请问:对于全局的内置对象session来说,是否跟内置对象request有关?
试下用下方法:
session.setAttribute( "user ",user);
session.getAttribute( "user ");

------解决方案--------------------
以前听说过这个问题。
就是第二个用户刷新时显示第一个用户的信息。
据说是服务器的一个什么设置有关系。
你用的是websphere或者weblogic吧。
------解决方案--------------------
你debug一下,看看第二个用户request.getSession()和第一个用户get出来的session对象的id是否一样,应该是不一样的。
------解决方案--------------------
这样的问题不少,两个用户共用一个session不是好办法.
其实应该一个登陆用户有他自己的一个session,当有相同的session时,要么将第一个session踢掉,要么不让第二个用户登陆.两个相同的session没什么意义.
------解决方案--------------------
对啊
应该写成
session.setAttribute( "user ",user);

String user = session.getAttribute( "user ");
------解决方案--------------------
用楼上说的方法应该没问题,我都是这样用的
------解决方案--------------------
可能是request.getsession()的问题。
------解决方案--------------------
session不会出这种问题吧。。。