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每次请求都会更新会话的主要内容,如果未能解决你的问题,请参考以下文章