Cakephp 3会根据每个请求续订会话

时间:2018-08-09 08:21:28

标签: session cakephp-3.0

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

1 个答案:

答案 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。可以肯定的是,我正在使用默认设置,但是也许我已经调整了默认设置。