【问题标题】:How to set different expiration time for each session in Laravel?如何为 Laravel 中的每个会话设置不同的过期时间?
【发布时间】:2018-02-27 18:56:09
【问题描述】:

我需要在我的 Laravel 项目中有几个会话,并且我需要每个会话都有一个特定的生命周期。

但在 Laravel 文档中,我只是找到了如何为所有会话(在配置/会话中)而不是为每个会话设置一般生命周期。

【问题讨论】:

  • “附加会话”取决于什么?其他身份验证者? ETC?需要更多信息
  • @Ohgodwhy Yo 可以假设我不想使用默认的 Laravel 身份验证并且我想开发自己,所以当用户登录系统时,他会在 20 分钟后注销,而当他登录时并检查(记住我复选框)他在 2 天后退出

标签: php laravel session laravel-5.6


【解决方案1】:

一种选择是使用SessionManagerextend 函数来修改驱动程序。例如,如果您将会话存储在数据库中,您可以将以下内容放在服务提供者的 boot 方法中(您可能想要移动逻辑,但这应该可以帮助您开始)

\Session::extend('database_custom', function() {
    $table = config('session.table');

    $lifetime = request('remember') ? 60*24*2 : 20; //minutes

    $connection = config('session.connection');

    return new Illuminate\Session\DatabaseSessionHandler(
        app('db')->connection($connection), $table, $lifetime , app()
    );
});

在您的.env 中,您可以将驱动程序设置为SESSION_DRIVER=database_custom。查看Illuminate\Session\SessionManager 了解更多示例。

【讨论】:

    猜你喜欢
    • 2018-07-29
    • 2023-03-27
    • 1970-01-01
    • 2017-10-20
    • 2016-01-15
    • 2018-04-19
    • 1970-01-01
    • 2021-09-16
    • 1970-01-01
    相关资源
    最近更新 更多