2 stone yw stone_yw 于 2017.05.20 12:14 提问

两个用户登录,session id问题

据我现在的知识来说,session是针对浏览器的,对于不同的浏览器,服务器会创建不同的sesionid。
我想问一下,如果是同一个浏览器,一开始是a用户登陆,这时服务器会创建一个sessionid(这里
会把sessionid存储到cookie中)。此时a用户退出,cookie中还是保留之前的sessionid。
那么如果用户b登录,那么按道理会从cookie中取出之前的那个sessionid,然后传给服务器,然后服务器端会识别这个sessionid,取出对应session的信息,那这样岂不是会造成:a用户存储在session中的信息,会被b用户看到。。。

各位大大,不知道我上述的描述有没有错误。。感觉应该对的。。但是实在想不通啊。。还求各位大大赐教~~~

有点尴尬了,发现自己没金币了。。。纯学术讨论。。谢谢了

7个回答

masstone
masstone   2017.05.20 12:55

今天有女朋友的去过520了,没有女朋友的假装自己去过520了,谁会来讨论啊!

showbo
showbo   Ds   Rxr 2017.05.20 14:31

此时a用户退出,cookie中还是保留之前的sessionid
你的退出指什么东西?
如果是关闭浏览器,sessionid的cookie是内存的,关闭浏览器会就会删除。
如果只是关闭标签页,没有关闭浏览器,对于标签浏览器来说cookie是继续有效的,如果a离开了没关闭浏览器b用这个浏览器继续查看网页就是a的信息

如果是点击链接请求服务器销毁了session,虽然cookie存在,但是服务器端session内容已经销毁也是获取不到的,之后重新登录系统读取用户系统初始化session才会有值。

stone_yw
stone_yw cookie设置持久化了。。直接保存为临时文件了,也就是说cookie中有sessionid信息。。
4 个月之前 回复
com_it
com_it   2017.05.20 12:54

每一个用户,服务器都会分配 不同的sessionId,并 保存 在 自己的 cookie中

stone_yw
stone_yw 这个知道啊。。。但是我说的是浏览器,应该是对于不同的浏览器分配不同的session吧
4 个月之前 回复
qq_18895659
qq_18895659   Rxr 2017.05.20 14:15

不同用户不同的sessionID就算相同的用户不同的时间登录也是不同的session,其实对于登录可以使用shiro来进行权限控制

stone_yw
stone_yw 我测试了一下。。比如都是用谷歌浏览器,a登录时,sessionid是100,然后a退出。。然后b登录登录,b会拿着刚才那个sessionid=100去的
4 个月之前 回复
javaStudet
javaStudet   2017.05.20 15:07

同一个浏览器,同一个sessionid.
服务器只会检查sessionID,并不知道是谁用这个sessionid登录的,看到信息也很正常啊.
不知我说的对不,各位Java牛人

stone_yw
stone_yw 我也觉得是这样。。但是这样的话,用户信息不就乱了么。。a可以看到b,b可以看到a么
4 个月之前 回复
suifeng3051
suifeng3051   2017.05.20 17:30

你提到这个问题的关键点在于**用户a有没有退出**。

如果a没有退出,浏览器中还保存用户a的登录状态(sessionId),此时不管是谁访问网站,只要是用同一个浏览器,网站都会认为是a在登录。

如果a已经退出,这里的退出有两种方式,一是清掉浏览器端的登录状态,也就是清除登录cookie,二是清除网站服务端的session,只要清除两者任何一个,就会使浏览器和网站失去关联,即用户a退出。如果此时b再访问,要么浏览器没有了cookie,要么cookie中的sessionId在网站服务端找不到对应的session,都会使得b重新登录

stone_yw
stone_yw 这样确实可以。。a退出时,session.isvalidate//。。。
4 个月之前 回复
qq_38866306
qq_38866306   2017.05.20 20:30

同楼上,如果调用过session清除方法清除过session,用户b自然看不到登录信息。
但如果清除的不彻底的话,用户b登录存入session时候,也会顶替掉原session中的值。
如果重启过浏览器,session中的值也会随浏览器的关闭而销毁
.(个人理解,有问题请各位多多建议)

stone_yw
stone_yw session保存在cookie中了。。应该是清楚session
4 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片