+ -
当前位置:首页 → 问答吧 → SessionID 避免公用

SessionID 避免公用

时间:2011-09-17

来源:互联网

同时用3个浏览器去访问同一个页面,将产生3个SessionID


cookie是进程内共享的,所以开3个浏览器就是3个进程,产生3个SessionID,没有问题。


但是,当你拿一个浏览器,打开3个标签页,去访问同一个网页的时候,产生的SessionID只有一个,就任务管理器里面看,是一个进程,所以产生一个SessionID ,也是没有问题的.


我现在面临的困惑:

一个的登陆界面,Server端判断用户名、密码是否正确,如果正确,生成一个Session,(request.getsession()).将用户名作为Session的attribute。(Session .setattribute(key,object))

另一个标签页,同样访问这个登陆界面,用户名,密码不同于上次,------>request.getsession(),这个session的sessionid和第一次登陆的一样,那么setattribute时,是把第一次产生的session的用户名改成第二次输入的。


这个很诡异,应该如何解决?



作者: Huntrees   发布时间: 2011-09-17

多用户用一个浏览器,服务器很难区分用户。
所以楼主可以坚持只支持单用户每浏览器。
这样的话,
需要修改登录代码,检查用户名密码前先检查是否有Session了,Session中是否已经有用户名了,如果已经有了,则提示无须再次登录。

其实想通了这是正常现象,不诡异。记得提醒用户就行了。

作者: magong   发布时间: 2011-09-18