Laravel 5.1:如何限制帐户访问,以便一次只能访问一个帐户


Laravel 5.1: How to limit account access so one account can be accessed at one time

我对Laravel比较陌生,但我想限制帐户访问,以便一次只能登录一个帐户。例如,如果我在我的工作计算机上登录我的帐户,然后同时在我的家用计算机上登录,它不会登录我,并提示我退出第一台计算机。

做这件事的最好和正确的方法是什么?

多谢

这是一个"逻辑"问题,而不是关于Laravel的问题。简而言之,我会构建这样的东西;

  1. 在用户表中添加一个字段,如'active_at',其中包含时间戳,'active_device'具有基于此登录(可能基于IP +设备信息)创建的唯一值;
  2. 当用户登录时,我会更新这些字段;
  3. 在后台有一些JavaScript调用服务器上的脚本每分钟(或更短取决于你的意愿),验证当前登录的用户和更新'active_at'时间戳字段;
  4. 然后,当登录到某个地方时,我会检查'active_at'是否过时并且不匹配'active_device'哈希,我会提示用户注销其他将清空这些字段的设备。

通过只允许登录过程接管设备(而不是JavaScript活动ping)的方式设置事情,您将不会在两个设备之间结束战斗:)

如果你想提示更多关于其他设备的信息(因为现在我们只有一个散列的设备信息字符串),你可以添加一个人类可读的设备名称的另一个字段,或者使用某种加密的字符串,这样你可以在需要的时候解密它。

如果active_device哈希不再匹配,最后一个步骤是让服务器代码处理步骤3销毁当前的身份验证会话。最酷的事情是将用户重定向到登录页面,只要求用户输入密码来重新验证当前设备(并触发覆盖active_device信息的登录过程)。