单账号登陆解决方案

xingji123 2009-12-23 01:41:20
用户表中有一个状态字段,判断用户是否登陆

用户登陆时修改状态

当用户退出的时候修改状态

用户登陆时当状态为已登陆则不进行登陆操作


求用户退出的时候修改状态的解决方案
分不够再开帖
先谢过!
...全文
200 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
hitlcyu19 2009-12-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wuyq11 的回复:]
如果正常点击按钮统退出或执行session_end就可修改数据库中字段
否则就可记录用户最后操作时间,如果超过规定时间,用户下线,通过定时执行修改用户状态
[/Quote]
这个应该就是可行的吧
lindenrty 2009-12-23
  • 打赏
  • 举报
回复
一定要极端保证可靠性的话
用Ajax保持心跳包发送的可行性比较高
Jelly_tracy 2009-12-23
  • 打赏
  • 举报
回复
我做过这个,在我以前的一个帖子里面,你可以通过一个时间字段来判断,因为如果你要是用session_end的话,不能准确的执行,比如是IE死掉了,或者重启了,等等,所以只要利用ajax不停的更新这个时间字段,然后再不停的读取这个字段,如果发现这个字段有一段时间没变(超过你自己设定的时间),就认为应该重新登录,这个是比较理想的实现方式
alex1987214 2009-12-23
  • 打赏
  • 举报
回复
数据库表中多出一个字段

用户每次登陆更新该字段 并把该字段存在 session 或 cookie中

获取用户信息的时候匹配该字段

这样用户就只能单登陆了

异地登陆的话,后面登陆的会把前面登陆的 挤掉
jinru2560 2009-12-23
  • 打赏
  • 举报
回复
把前面登录的账号踢掉,保持同一账号只能一个地方登录;
别递烟哥不会 2009-12-23
  • 打赏
  • 举报
回复
我在想断电,或者电脑崩掉的时候怎么处理
ziyouren521125 2009-12-23
  • 打赏
  • 举报
回复
如果正常点击退出的话可以,要不然不好做
foxsorange 2009-12-23
  • 打赏
  • 举报
回复
这个问题,没有好的解决方案,除非约束用户点击自己系统的“退出按钮”,因为用户状态有很多因素,要精确判断,程序会很复杂,一般做不到理想状态
Lovely_baby 2009-12-23
  • 打赏
  • 举报
回复
你的程序里面肯定有自动刷新页面吧?
用Apllication或者数据库或者文件都可以,
比如用application
规定每隔n秒,每个用户都要清空并刷新一下Apllication变量,里面存放所有在线用户id,同时比较刷新前后的差异。
比如:Apllication("id")="1-3-5-23-56-23-90"表明这几个用户在线。
如果有一个人id=3吊线了,那么在几个n秒之内这个变量里面他就没提交自己的ID,就会
Apllication("id")="1-5-23-56-23-90"
那么任何一个用户都可以把他从数据库里面自动还原,比如K个n时间内都没出现id=3,就认为他掉了。
如果有人开始还原他了,那么别人就不再还原他。这个好判断。
我这种做法,会增加服务器负担,而且用户也要不停的刷新。适合对实时要求高,用户少的程序。误差是<K*n,K就是你设定的次数。
中间还有很多关键技巧:
还要用几个辅助全局变量,锁定和开锁apllication。
还要存放上k-1次的Apllication("id")
还要靠global.sa文件,最后托一下底,防止万一在线没人的情况。
xingji123 2009-12-23
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 wxd024 的回复:]
按楼主描述的不是单点登录(SSO),只是同一用户名只能登录一次。
[/Quote]
和51job的登陆功能一样的
wxd024 2009-12-23
  • 打赏
  • 举报
回复
按楼主描述的不是单点登录(SSO),只是同一用户名只能登录一次。
xingji123 2009-12-23
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 lindenrty 的回复:]
Session End的时候修改
并且页面关闭的时候也用Ajax提交退出请求

[/Quote]
这个可行,但是怕断电
或者断网
lindenrty 2009-12-23
  • 打赏
  • 举报
回复
Session End的时候修改
并且页面关闭的时候也用Ajax提交退出请求
kke_007 2009-12-23
  • 打赏
  • 举报
回复
单点登录
tzs2304 2009-12-23
  • 打赏
  • 举报
回复
不是很好操作的
游北亮 2009-12-23
  • 打赏
  • 举报
回复
楼主是说单点登录?

这个搜索一下挺多的
zhgroup 2009-12-23
  • 打赏
  • 举报
回复
建议使用数据库处理,根据用户最后活动时间检测用户是否已退出
xingji123 2009-12-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wuyq11 的回复:]
如果正常点击按钮统退出或执行session_end就可修改数据库中字段
否则就可记录用户最后操作时间,如果超过规定时间,用户下线,通过定时执行修改用户状态
[/Quote]

试过了,不是每次退出都会执行的~
hbbliyong 2009-12-23
  • 打赏
  • 举报
回复
通过时间判断,登录时判断上次登录时间,如果登录时间到现在的间隔超过你设定的间隔则可重新登录
于吉小妖 2009-12-23
  • 打赏
  • 举报
回复
session_end 修改状态位
加载更多回复(2)

62,046

社区成员

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

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

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

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