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

问题描述 投票:1回答:1

我正在使用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调用)时,用户才会退出。

session cakephp-3.0
1个回答
0
投票

我似乎工作得很好,超时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。相当确定我使用默认设置,但也许我已经调整了这些设置。

© www.soinside.com 2019 - 2024. All rights reserved.