【问题标题】:How to set Different Auto logout time for each user in Laravel when user is ideal当用户理想时,如何在 Laravel 中为每个用户设置不同的自动注销时间
【发布时间】:2019-04-21 15:28:11
【问题描述】:

我在他的个人资料中为每个用户设置了一个时间,该用户应在该时间后自动注销。

例子:

用户 1:自动注销时间 => 60 分钟

用户 2:自动注销时间 => 120 分钟

用户 3:自动注销时间 => 150 分钟

所以登录后,用户 1 应在登录 60 分钟后退出,用户 2 应在 120 分钟后退出,用户 3 应在 150 分钟后退出。有谁知道如何实现这一目标?

我正在考虑为每个登录请求从 session.php 文件更改会话生命周期,但不知道它是否有效。

提前致谢。

【问题讨论】:

  • 您可以在每个用户登录数据库并在一段时间后进行 AJAX 调用时节省他们的注销时间。在每个 AJAX 调用中,您可以检查当前时间的注销时间,以及时间是否超过注销用户。
  • 你没有得到我的问题,我需要检查理想的时间,然后我需要退出。

标签: javascript jquery laravel laravel-5 laravel-5.2


【解决方案1】:

为此,您可以使用setInterval javascript 函数

    var timeoutSeconds = <?php echo Session::get('timeoutSeconds'); ?>
    var _idleSecondsCounter = 0;

    window.setInterval(CheckIdleTime, timeoutSeconds);

    function CheckIdleTime() {
        _idleSecondsCounter++;
        var oPanel = document.getElementById("SecondsUntilExpire");
        if (oPanel)
            oPanel.innerHTML = (IDLE_TIMEOUT - _idleSecondsCounter) + "";
        if (_idleSecondsCounter >= IDLE_TIMEOUT) {
            document.getElementById('logout-form').submit();
        }
    }

在登录控制器中,您可以像这样设置会话

 $userCount = 1;

 $timeOutSeconds = 60 * $userCount;

 Session::put('timeoutSeconds', $timeOutSeconds);

服务器端

在 Laravel 中创建一个后台作业,并在登录方法后执行延迟调度。

Delayed Job Dispatch

【讨论】:

  • 客户端解决方案对此不是很安全。
  • 是的,我同意@RoryMcCrossan。如果您在服务器端需要这个,那么我认为需要添加一个调度程序来检查当前用户是否有有效的会话。如果不注销
  • 是的@RoryMcCrossan,我同意你的看法,这不安全,没有其他方法吗?
  • 我对 PHP/Laravel 的了解不够,无法为您提供解决方案,但这绝对是您需要关注的地方
  • 好的。谢谢,感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-22
  • 2020-02-13
  • 2014-09-28
  • 2013-09-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多