精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2006-11-22
如:登录管理员界面,进行一些操作,当前session应为管理员信息,切换到一个普通用户登录的页面,读取到的session信息却发生了混乱,读出了管理员的相关信息,导致一般用户的界面下,却按管理员的权限进行数据提取。 当然,每台机子只登录一个用户不会暴露这个问题。 请问:如何有甄别的读取系统生成的session信息,避免交叉混用的情况出现。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2006-11-22
用的浏览器是什么
|
|
返回顶楼 | |
发表时间:2006-11-23
写程序时没有对session进行初期化处理....
|
|
返回顶楼 | |
发表时间:2006-11-23
抛出异常的爱 写道 写程序时没有对session进行初期化处理....
是的,登陆成功时保存用户信息到session之前先把session中原来用和的信息清空。 |
|
返回顶楼 | |
发表时间:2006-11-23
是你自己想让它混乱,能怪得了系统么?
如果是IE,在原窗口基础上使用ctrl+N生成的新窗口和其它弹出窗口,都相当于是同一个application的,会共用一个session。 在IE里想使用多个session的话,每个IE窗口,都必须是点击ie图标来生成的新窗口。这样互相之间才不冲突。 保险一点的方法,是在本机安装多个浏览器,IE、mozilla、firefox、opera。这样绝对的互不冲突,就看你的应用能不能跨浏览器来跑了。 |
|
返回顶楼 | |
发表时间:2006-11-23
干脆一点,就只能让用户只允许开一个IE,就决不会出现这个问题了,
|
|
返回顶楼 | |
发表时间:2006-11-23
这个实质上是cookie的问题,因为ctrl+N新建的窗口是共用cookie的,理所当然地,session也是共用的。
|
|
返回顶楼 | |
发表时间:2006-11-27
guoshiguan 写道 干脆一点,就只能让用户只允许开一个IE,就决不会出现这个问题了,
应该是一台机子只让一个帐户登陆吧?这个程序是可以相对控制的 |
|
返回顶楼 | |
发表时间:2007-01-10
together说的很对。
我在补充一下,严格的说session是线程不安全的,因为你开多了窗口,它们自然不是属于一个线程之内,session自然就会乱掉。 解决的方式有两种: 1、在客户端设置令牌来解决,也就是每次请求都给客户端返回服务器短的session id,并且保存该session id到session中,然后根据客户端返回的session id与服务器短session中保存的session id比较做决定。这种方式比较麻烦 2、还有就是使用ThreadLocal来保存用户信息。 个人觉得第二中方式简单一些 |
|
返回顶楼 | |
发表时间:2007-01-10
不是线程,是浏览器进程。
Ctrl+n出来的是同一进程中的新窗口。 |
|
返回顶楼 | |