【问题标题】:Laravel 5.2 override session lifetime variableLaravel 5.2 覆盖会话生命周期变量
【发布时间】:2018-04-30 21:17:41
【问题描述】:

所以基本上我只想在运行时为某些用户覆盖配置的session.lifetime 变量。

所以在 session.php 配置文件中,我设置了lifetime = 60。但对于某些特定用户,我希望它用于120 minutes

我试过了:

在myController的登录功能中

  1. 检查用户是否为特殊用户
  2. 设置config(['session.lifetime' => 120])
  3. 让用户使用Auth::attempt()登录。

但它仍然反映了每个用户的60 minutes 生命周期。那么如何为不同的用户实现不同的session.lifetime呢?

我也试过了:This solution 不起作用。

编辑:我不想缓存任何数据,也不想在我的会话中存储任何特定时间的自定义数据。我想定义一个用户在我的网站上可以理想多长时间,然后他才会跳出登录页面。所以绝对不是This question的复制品

【问题讨论】:

  • session.lifetime 全局设置
  • 为什么需要多个session.lifetime
  • 在我的应用程序中,我有不同的user_type 附加到每个用户。所以取决于user_type 会话时间是不同的。这就是要求。
  • @madalinivascu 不,这不是您建议的副本。请阅读我的编辑。

标签: php session laravel-5.2 config session-variables


【解决方案1】:

根据我对此的研究,我了解到 Laravel 设置了用户的 last_active_time 并且可能在 Authentication 中间件中,他们将一些逻辑进行检查,例如

If((last_active_time + config_session_time) > current_timestamp) {
   'Send user to login page.';
}
else {
   'Update last_active_time = current_timestamp';
   'Continue';
}

如果 Laravel 提出了一个设置 session_expire_time 的逻辑,那么我们可以设置动态会话时间,而不是设置 last_active_time。否则,在不扭曲 Laravel 当前逻辑的情况下设置动态会话时间似乎是不可能的。

如果我错了,这里的任何 Laravel 团队成员/专家都可以纠正我。

【讨论】:

    猜你喜欢
    • 2016-11-21
    • 2014-08-10
    • 1970-01-01
    • 2018-08-29
    • 2017-11-08
    • 1970-01-01
    • 2011-08-21
    • 2014-08-03
    • 2013-10-27
    相关资源
    最近更新 更多