第一次尝试我在表中创建了一个登录状态字段,默认情况下它将为0,当用户登录时,它将更新为1。所以当别人尝试用同一账号登录时无法登录。但问题是,当我更新登录状态时,用户点击登出按钮,但当互联网连接断开或PC关机或用户关闭浏览器而不点击登出按钮,那么登录状态无法更新,总是显示'有人已经登录'。
第二次尝试我在登录时生成一个登录令牌,并将其存储在数据库和会话中。对于每个事件,我用会话检查数据库令牌,如果为真,则让它们处理。当其他用户使用相同的帐户登录时,令牌被更新,前一个用户由于会话与数据库不匹配而注销
,但我希望其他用户不能登录,而一个用户已经登录。因为我正在创建在线考试门户所以当用户的浏览器直接关闭或系统关闭时,第一个不能工作第二个允许其他用户登录和注销前一个用户
是否有办法防止一个用户登录时其他用户不能登录
看起来你需要实时跟踪活跃的连接用户。我会使用web sockets。
示例堆栈将是:Node.js后端+套接字。io库。如果你有一个现有的php应用程序-也许可以添加一个微服务。使用javascript你也可以跟踪设备ID和特定的设备断开/重新连接,由于网络问题。