我正在使用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调用)时,用户才会注销。
答案 0 :(得分: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'
]
],
这是会话的缓存配置:
'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。可以肯定的是,我正在使用默认设置,但是也许我已经调整了默认设置。