如何在CakePHP中配置会话生存期仅持续24小时?

vq8itlhq  于 2022-11-11  发布在  PHP
关注(0)|答案(1)|浏览(140)

我的应用程序使用的是CakePHP v4。
我要做的是将会话设置为在24小时后过期,而不处于非活动状态。
一个会话应该持续24小时,无论有几个小时的不活动或没有。
下面是我在bootstrap.php文件中的配置。

Configure::write('Session', [
    'defaults' => 'php',
    // 'timeout' => 1440,
    'cookieTimeout' => 1440, // The session cookie will live for at most 24 hours, this does not effect session timeouts
    'checkAgent' => false,
    'autoRegenerate' => false, // causes the session expiration time to reset on each page load
]);

我应该将autoRegenerate设置为false,对吗?
timeout可以省略,对吗?
会话应在24小时后过期,即使不活动也是如此。
所以请让我知道什么是正确的配置。
目前,如果关闭浏览器,会话将过期。
如果用户关闭浏览器,如何防止会话过期?
先谢谢你了。

**更新:**我正在使用会话来保留我的令牌。

$accessToken = $this->getRequest()->getSession()->read('accessToken');

我希望在关闭浏览器的情况下24小时保留accessToken。

o7jaxewo

o7jaxewo1#

默认情况下,PHP会将会话cookie设置为在浏览器关闭时立即过期,而不管配置的Session.timeout值是多少。cookie超时由session.cookie_lifetime ini值控制,可以使用以下命令配置:

Configure::write('Session', [
    'defaults' => 'php',
    'ini' => [
        // Invalidate the cookie after 30 minutes without visiting
        // any page on the site.
        'session.cookie_lifetime' => 1800
    ]
]);

请参阅:https://book.cakephp.org/4/en/development/sessions.html

相关问题