【问题标题】:How to config session lifetime lasts only 24 hours in CakePHP?如何在 CakePHP 中配置会话生命周期仅持续 24 小时?
【发布时间】:2021-08-03 01:55:08
【问题描述】:

我正在为我的应用程序使用 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');

即使我关闭了浏览器,我也想保留 accessToken 24 小时。

【问题讨论】:

    标签: php session cakephp


    【解决方案1】:

    默认情况下,无论配置的 Session.timeout 值如何,PHP 都会将会话 cookie 设置为在浏览器关闭后立即过期。 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

    【讨论】:

    • 您好,谢谢,现在似乎可以使用了。您确定会话会在 1800 分钟后过期吗?
    • ini 中设置session.cookie_lifetime' => 1800 就能解决我的问题吗?
    • 即使关闭浏览器也不会过期,但是无论是在浏览器内部还是外部浏览器都会在20分钟后过期。我没想到。
    • 我是这样用的。文档也建议这样做!满意就采纳答案!谢谢。
    • 不,你的回答对我没有任何意义。
    猜你喜欢
    • 1970-01-01
    • 2011-09-19
    • 2019-01-22
    • 1970-01-01
    • 2011-09-15
    • 2012-04-07
    • 2015-07-09
    • 2013-12-29
    • 2021-09-21
    相关资源
    最近更新 更多