【问题标题】:Laravel 5.1: How to limit account access so one account can be accessed at one timeLaravel 5.1:如何限制帐户访问,以便一次访问一个帐户
【发布时间】:2015-10-04 04:38:14
【问题描述】:

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

最好和正确的方法是什么?

非常感谢

【问题讨论】:

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


    【解决方案1】:

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

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

    通过以某种方式进行设置,只允许登录过程接管设备(而不是 JavaScript 活动 ping),您最终不会在两台设备之间争斗 :)

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

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

    【讨论】:

    • 这是有道理的,它似乎是解决我问题的好方法。你会建议我如何连接到身份验证控制器来检查这个“active_at”字段?
    • 我会在 postLogin 中添加一些自定义逻辑(请参阅stackoverflow.com/questions/28584531/…),在那里我将在身份验证时验证并存储 active_at 和 device_hash。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-12
    • 1970-01-01
    • 2020-09-12
    • 1970-01-01
    • 2012-09-05
    • 1970-01-01
    相关资源
    最近更新 更多