如何为Laravel中的每个会话设置不同的到期时间?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何为Laravel中的每个会话设置不同的到期时间?相关的知识,希望对你有一定的参考价值。

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

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

答案

一种选择是使用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了解更多示例。

以上是关于如何为Laravel中的每个会话设置不同的到期时间?的主要内容,如果未能解决你的问题,请参考以下文章

如何为 Objective-C 中的每个单元格设置不同的图像?

如何为 Firestore 文档设置到期日期 [重复]

如何为列表框中的每个项目设置不同的工具提示文本?

如何为 Laravel ORM 中每个组中的单个项目执行 groupBy()

如何为每个目录设置 PHP 的 auto_prepend_file 指令?

如何为 Golang 和 AppEngine 设置 VScode 调试会话?