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

时间:2015-07-15 08:32:38

标签: php security laravel laravel-4 laravel-5

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

这样做的最佳和正确方法是什么?

非常感谢

1 个答案:

答案 0 :(得分:2)

这是一个关于Laravel的“逻辑”问题。总之,我会建立这样的东西;

  1. 在用户表中添加一个字段,例如'active_at',其中包含时间戳,以及'active_device',其中包含基于此登录名创建的唯一值(可能基于IP +设备信息);
  2. 当用户登录时,我会更新此字段;
  3. 在后台有一些JavaScript在服务器上每分钟调用一个脚本(或者根据您的意愿更短),验证当前登录用户并更新'active_at'时间戳字段;
  4. 然后当我在某个地方登录时,我会检查'active_at'是否过时而且不匹配'active_device'哈希我会提示用户注销另一个会清空这些字段的设备。
  5. 通过以某种方式进行设置,只允许登录过程接管设备(而不是JavaScript活动ping),您最终不会在两个设备之间进行战斗:)

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

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