web系统如何做到一个账号同时只能一个人登录

帅狗 发布于 2014/03/13 10:20
阅读 7K+
收藏 0
ruti....................
加载中
0
duty
duty

数据库用户表多一个字段记录登录信息,已经登录就驳回。


帅狗
帅狗
最大的问题是用户非正常退出怎么办
0
傲罗
傲罗
用户session或者cookie中保存加密过的最后登录时间,跟数据库中的对比,一旦不同,此次登录就失效
xmut
xmut
回复 @瓣挚锅 : 不是有个会话时间吗? 还有,通常的处理是:后面登陆的人踢掉前面已登陆的人! 这样做:①确保非正常退出仍然登陆 ②被踢出的人至少知道自己的密码被人知道,账号被人登陆,除非他有意告诉其他人,那么他可以找到他商量什么时间使用……
帅狗
帅狗
最大的问题是用户非正常退出怎么办?
0
duty
duty
回复 @瓣挚锅
首先你的需求是不能同时由两个人登录,如果一个帐号两个人用,只保证一个浏览器在线就可以了。
因为非正常退出比如杀浏览器进程、断电等,这些情况你来不及注销登录信息,所以,非正常的情况没法处理。
你要做的是用户登录的时候记录sessionID,当再次登录的时候判断浏览器sessionID是否一致。如果不一致则提示用户账户已经登录,是否继续,继续登录之后更新数据库里的sessionID,同时用户在线期间要检测用户的sessionID是否同数据库保持一致,不一致踢下线。
帅狗
帅狗
用户在线期间检查sessionID?那不是得是不是的判断数据库吗
0
无痕的旋律
无痕的旋律
做一个sessionID和用户ID的绑定,一旦session创建就将该session绑定到用户的ID上,如果改ID已经有session绑定,如何处理看你的了。在session destroy的时候做一次解绑,这样是保证用户下次可以正常登陆。可以把这个绑定放到缓存里面。
0
linan
linan
用户登录后服务端生成唯一标识。 服务器端保存 唯一标识和用户ID的对应关系。 客户端cookie里存唯一标识。过滤器比较客户端标识和内存里的是否一致,不一致转到登录页面。 
0
Ryan-瑞恩
Ryan-瑞恩
你说的这个属于单点登录!!!
返回顶部
顶部