一个关于session的老问题,求最新解决方法

luofenghen 2011-04-07 09:56:20
两用户使用同一机器先后登陆系统,并且没有处理意外关闭或者两用户同时在线情况
存在session串值问题
在同一台电脑上登录,同一session域里session就可能串值,后面覆盖前面session

排除用ctrl +n的解决方法
排除用URL传值

请教下还有什么其他的好方法吗?
...全文
188 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
luofenghen 2011-04-16
  • 打赏
  • 举报
回复
该问题 无解
ltcszk 2011-04-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 luofenghen 的回复:]

引用 2 楼 wxg22526451 的回复:
还有重要的功能客户端要用个隐藏域存用户名或ID,
提交时服务器端校验这个用户名是否session里的跟客户端提交上来的是否一致,不一致就说明被篡改了

这个的话 用session ID 来判断 可以做到 问题是知道被篡改了 我也没办法啊 用户要求要这样做呢~ 灰常郁闷的说~
[/Quote]
篡改了就把原有的session清空,重新赋值啊
Toplovejay 2011-04-08
  • 打赏
  • 举报
回复
单点咯,数据库加个字段,同时登陆后者踢掉前者。
luofenghen 2011-04-08
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 onetwofree 的回复:]
ie8下,同一台计算机多开ie(非ctrl+N)是会这样的。

"C:\Program Files\Internet Explorer\iexplore.exe" -nomerge

加上-nomerge参数启动ie浏览器就可以了
[/Quote]
主要是客户机 不可能是这样的 您的方法不通用 谢谢
onetwofree 2011-04-08
  • 打赏
  • 举报
回复
ie8下,同一台计算机多开ie(非ctrl+N)是会这样的。

"C:\Program Files\Internet Explorer\iexplore.exe" -nomerge

加上-nomerge参数启动ie浏览器就可以了
luofenghen 2011-04-08
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 ranen2010 的回复:]
QQ空间好像也是这个样子的,
[/Quote]
是的 有没有新办法?
小童 2011-04-08
  • 打赏
  • 举报
回复
QQ空间好像也是这个样子的,
new_fengzi 2011-04-08
  • 打赏
  • 举报
回复
怎么判断退出呀 如果不是正常退出的话 。。。
[Quote=引用 4 楼 wxr0323 的回复:]
同一用户登陆一个机器 根本就是后登陆踢掉前面登陆的啊

给用户加个字段吧

登陆的时候去读这个字段 为1 就是已登陆 不允许在登陆

退出的时候更新为0
[/Quote]
nazicp 2011-04-08
  • 打赏
  • 举报
回复
请把sessionstate由InProc修改为保存在sqlserver中,在web.config中
<system.web>
<sessionState mode="SQLServer" sqlConnectionString="DataSource=你的数据库地址;Integrated Security=True" sqlCommandTimeout="30" />
</system.web>
然后在你的.net目录中运行:
aspnet_regsql.exe -C "连接字符串" -ssadd -sstype c -d 你要保存sessionstate的数据库名字
这个命令会新建一个用于保存SessionState的数据库.

这样做会让你的SessionState更具健壮性和伸缩性,但是性能会有损失.更具体的你可以查阅下MSDN.那是最好的老师.
luofenghen 2011-04-08
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 dygaalove 的回复:]
就用数据库吧,登录时候记录下时间,如果再次登录,存在记录了,就更新之前的,或者不准登录。
[/Quote]

不准登录 也不用那么麻烦的 直接判断下 上个SESSION值和 现在的 是不是一样的就行了


但我想要的是2个ID 共存的方法
  • 打赏
  • 举报
回复
就用数据库吧,登录时候记录下时间,如果再次登录,存在记录了,就更新之前的,或者不准登录。
gcchena 2011-04-08
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wxr0323 的回复:]
同一用户登陆一个机器 根本就是后登陆踢掉前面登陆的啊

给用户加个字段吧

登陆的时候去读这个字段 为1 就是已登陆 不允许在登陆

退出的时候更新为0
[/Quote]

退出可不是那么好判断的,有些是关掉网页了,就没办法知道是否退出了。个人认为还是用cookie来存储登录信息的好。
luofenghen 2011-04-08
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 ltcszk 的回复:]
引用 3 楼 luofenghen 的回复:

引用 2 楼 wxg22526451 的回复:
还有重要的功能客户端要用个隐藏域存用户名或ID,
提交时服务器端校验这个用户名是否session里的跟客户端提交上来的是否一致,不一致就说明被篡改了

这个的话 用session ID 来判断 可以做到 问题是知道被篡改了 我也没办法啊 用户要求要这样做呢~ 灰常郁闷的说~

篡改了就把……
[/Quote]
因为原先就是session传值的 没有保存的
子夜__ 2011-04-07
  • 打赏
  • 举报
回复
同一用户登陆一个机器 根本就是后登陆踢掉前面登陆的啊

给用户加个字段吧

登陆的时候去读这个字段 为1 就是已登陆 不允许在登陆

退出的时候更新为0
luofenghen 2011-04-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wxg22526451 的回复:]
还有重要的功能客户端要用个隐藏域存用户名或ID,
提交时服务器端校验这个用户名是否session里的跟客户端提交上来的是否一致,不一致就说明被篡改了
[/Quote]
这个的话 用session ID 来判断 可以做到 问题是知道被篡改了 我也没办法啊 用户要求要这样做呢~ 灰常郁闷的说~
wxg22526451 2011-04-07
  • 打赏
  • 举报
回复
还有重要的功能客户端要用个隐藏域存用户名或ID,
提交时服务器端校验这个用户名是否session里的跟客户端提交上来的是否一致,不一致就说明被篡改了
wxg22526451 2011-04-07
  • 打赏
  • 举报
回复
可控制用户在线时不能重复登录,重复登录就提示用户
服务端内存加在线列表管理和判断

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧