Cakephp 3每次请求都会更新会话

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Cakephp 3每次请求都会更新会话相关的知识,希望对你有一定的参考价值。

我正在使用Cake中的Auth组件,我正试图让每次请求都更新会话。

根据文件:

'ini' => [
        // Invalidate the cookie after 30 minutes without visiting
        // any page on the site.
        'session.cookie_lifetime' => 1800
    ]

即使使用此功能,用户也会每30分钟注销一次,无论是否提出任何请求。

除此之外,我还补充说:

'timeout' => 30

这不会改变行为。

所以我想要实现的目标如下:

当用户登录时创建一个保持有效30分钟的会话,每个请求都刷新会话。因此,只有当用户实际处于非活动状态超过30分钟(没有页面加载,没有Ajax调用)时,用户才会退出。

答案

我似乎工作得很好,超时15分钟。这是我在AppController中的内容

public function initialize() 
{
    parent::initialize();
    $this->loadComponent('Auth', [
        'loginAction' => '/admin/login',
        'authenticate' => [
            'Form' => [
                'finder' => 'auth',
                'passwordHasher' => [
                    'className' => 'Fallback',
                    'hashers' => [
                        'Default',
                        'Legacy'
                    ]
                ],
                'fields' => [
                    'username' => 'email_address', 
                    'password' => 'password',
                ],
                'userModel' => 'User',
            ],
        ],
        'storage' => 'Session'
    ]);
}

在config / app.php

'Session' => [
    'defaults' => 'cache',
    'timeout' => 15,
    'handler' => [
        'config' => 'session'
    ]
],

这是Session的缓存配置:

'Cache' => [
    'session' => [
        'className' => 'Redis',
        'duration' => '+90 days',
        'path' => CACHE,
        'url' => env('CACHE_DEFAULT_URL', null),
    ],

当然,我使用Redis进行会话存储,并为我们的用例提供专门的Auth。如果所有这一切看起来都与您配置的相似,那么可能是您的php.ini设置?我在Ubuntu 18 + Apache上运行带有PHP 7.0 FPM的CakePHP 3.5。相当确定我使用默认设置,但也许我已经调整了这些设置。

以上是关于Cakephp 3每次请求都会更新会话的主要内容,如果未能解决你的问题,请参考以下文章

CakePHP 3 跨 2 个表保存关联数据

每次重启后都会添加片段(Android)

cakephp 3如何增加会话超时

Laravel 会话 ID 随每个请求而变化

CakePHP 3.5 400 错误请求

用户在Laravel中更新密码后自动退出。我怎么防止这个?