为了账号安全,请及时绑定邮箱和手机立即绑定

在B/S结构的系统中如何实现禁止一个账号在多处同时登录 ?

在B/S结构的系统中如何实现禁止一个账号在多处同时登录 ?

PHP
动漫人物 2019-03-10 17:17:25
如题。为了防止用户进行账号分享使用,即需要禁止用户一个账号在多台机同时登录使用,注意,客户端为浏览器。应该如何设计这样一样一个方案?当出现重复登录时,需要把最先登录的那个T下线。如何来设计 ?假设系统是有一定的负载,需要考虑方案实现性能。请大神们多考虑下你想到的方案有没有漏洞,感觉好难实现的。 --------后面补充------如果您的方案是基于下面的思路实现的,在一个大型系统中不可行的:1、靠存储用户登录状态信息,用户登录时判断该用户是否已有登录状态保存,这种是不可靠的,用户非正常退出后,他的登录状态信息会一值保持 ,需要做心跳检查。这个心跳时间是个问题。所以不可靠。2、使用token存储在客户端实现的,只要token被用户分享,就可以共享账号登录。
查看完整描述

1 回答

?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

并没有那么难
新建token表
字段 id,token,userid,created_at,expire_at

登陆逻辑不变,使用账号密码登陆,登陆后,将该用户以前的token设为过期,并生成token写入该表,并把信息返回前端

前端收到token可以存在localStorage,访问需要登录的借口时带上token,建议放在请求头传输

后台收到请求后读取请求头的token,与数据库比对,如果有效则token对应的userid为已登录用户

查看完整回答
反对 回复 2019-03-18
  • 1 回答
  • 0 关注
  • 729 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信