网页账号唯一登录

尼古拉斯
  • 70

我现在做了一个网站登录,注册后,登录,只允许登陆一次,意思就是我登陆后,在另外的电脑就不能再次登录,我现在能想到的办法就是在数据库里面添加一个字段,当登陆成功后置标志位,点击退出还原标志位,但是如果在突然电脑断电或者直接关闭网页的情况下,这种操作就很危险,因为标志位没有还原,没有办法再次登录,相当于把账户锁死了,请问各位大神有没有好的思路或者其他的方法来实现这个功能呢??感谢!!!

回复
阅读 1.4k
6 个回答

万一异常登出呢?比如直接关掉浏览器或者异常断电,断网?那你不是还要加一个心跳?

这个就要看你是要保留前一位的登录状态还是后一位。
如果是保留后一位,
就直接每次登录生成唯一token,直接用后一个挤掉前一个。

如果需要保留前一个,

那就登陆后 每次操作后 添加一个最后操作时间(由于 Redis 或者其他效率更高的解决方案) 来做 然后后一位登入时 判断前一位的最后操作时间是否在容差时间内 如果超出 就允许后一个登录 如果未超出就阻止。

这不是我们大学的选课系统么:如果用户登录后未点击登出,而是直接关掉浏览器(或关机、或断网、只要是没在登录状态下点登出),那么账号就会被锁死,几天之内都会提示你的账号已在其他地点登录(你这个学期要废啊)
当然学校是给出办法啦,打电话给教务处就好了。

所以如果你打算也实现这么糟糕的逻辑,那就留个客服电话等打爆。

心跳吧 或 异步自调用ajax(跟微信一样),简单点,而且用长连接的方式并不会太耗性能

设置一个最大登录时效,超时了自动退出登录,后台起个任务定时执行。

做踢掉上一次登陆呢?能满足需求吗?感觉这样简单一点。用户每次登陆就会刷新token,上次的token就会失效

单点登录SSO了解一下;

宣传栏