如何在CakePHP中使会话无限(或者至少在不活动时更长)?

uttx8gqw  于 2022-11-12  发布在  PHP
关注(0)|答案(3)|浏览(163)

我正在使用CakePHP 2.4.3,现在,它在我不活动大约30分钟后就将我注销。我希望会话持续更长时间(或者像Facebook一样无限长)* 即使我离开网站(不关闭浏览器)* 几个小时左右。
我在app/Config/core.php上尝试过以下方法,但都不起作用:

测试#1:

Configure::write('Session', array(
        'defaults' => 'php',
        'timeout' => 60, // The session will timeout after 60 minutes of inactivity
        'cookieTimeout' => 4320, // The session cookie will live for at most 3 days, this does not effect session timeouts
        'checkAgent' => false,
        'autoRegenerate' => true, // causes the session expiration time to reset on each page load
    ));

测试2:

Configure::write('Session', array(
        'defaults' => 'php',
        'timeout' => 2160, // 36 hours
        'ini' => array(
            'session.gc_maxlifetime' => 129600 // 36 hours
        )
    ));

测试#3:

Configure::write('Session', array(
            'defaults' => 'php',
            'cookieTimeout' => 0
    ));
Configure::write('Security.level', 'medium');

我现在不知道当cakephp站点上的脚本本身不工作时会发生什么(测试2)。我登录,检查其他站点,然后在一个小时后回到它,然后它被注销。我如何使CakePHP中的会话无限(或至少更长,即使在不活动时)?

e5nqia27

e5nqia271#

将其放在AppController中afterFilter操作中:
$this-〉会话-〉续订();
这会将会话Cookie更新为无限。
否则,请尝试以下代码:

'Session' => [
        'defaults' => 'database',
        'timeout'=>2441,

    ],

根据您的要求添加超时。
使用会话作为数据库,创建会话表,它将存储会话
也许它会帮助你

knpiaxh1

knpiaxh12#

把下面的代码放到你的项目core.php文件中

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

vuv7lop33#

在Cakephp 2.4中,开发人员关闭了session.auto从用户脚本设置www.example.com _start选项的功能。
但有一个变通的办法,
在配置/核心. php中

Configure::write('Session', array(
    'cookie' => 'myApp',
    //'defaults' => 'php', // Comment this line
    'timeout' => '1440', // Set the timout to 24 hrs
    'autoRegenerate' => true, // causes the session expiration time to reset on each page load
    'ini' => array(
        'session.use_trans_sid' => 0, // use other configuration from php default config
        'session.cookie_path' => "/" // use other configuration from php default config
    )
));

相关问题