防止同时登录的最佳方法

Fel*_*mas 1 php vue.js

我知道这是一个递归问题,但是,我还没有找到新的解决方案,或者基于新的前端框架或技术的解决方案。

我有一个 Vue + PHP 应用程序,用户可以每次登录一次。我当前阻止并发访问的解决方案是使用 Ajax 调用 PHP 页面 5 到 5 分钟来存储时间。我也在数据库中存储了一个标志,无论它是否已注册。因此,当用户尝试登录时,我检查时间是否大于 6 分钟或标志设置为 0。

我认为这不是最好的方法。当应用程序有太多用户时,可能会导致服务器负载过大。

有没有办法像Netflix那样做?尝试连接并登录到另一台计算机时发出警告。

Cha*_*ver 5

如果您的最终目标是让任何给定帐户一次只能登录一台计算机,请在登录时生成一个唯一的 ID,并将该 ID 写入该用户的数据库。将该 ID 设置为用户的 cookie。当您收到来自该用户的流量时,仅当其 cookie 与数据库中的值匹配时才认为他们已登录。

当用户登录到新设备时,会生成一个新的唯一 ID 并将其作为 cookie 发送到该新设备。新设备的流量具有与数据库匹配的 cookie,因此被视为已登录。当旧设备访问您的应用程序时,登录 cookie 不再与数据库中的值匹配,因此用户被视为已注销。

当旧设备再次登录时,数据库中会生成一个新的唯一 ID,并将其作为 cookie 发送到该设备。他们现在已登录,因为他们的 cookie 匹配。第二个设备的 cookie 不再与数据库匹配,因此被注销。