CakePHP 2.0 session 超时过早

标签 session cakephp-2.0

我最近切换到 Cake2.0,并且遇到了一些 Sessions 超时的问题,比他们应该的要快得多。

documentation 复制示例,我将 session 类型设置为 php,并将超时设置为 3 天(4320 分钟)。但是,看了各种文章,好像在Cake中设置了3天的超时时间,如果PHP.ini中设置的session或者GC的超时时间更短,PHP可能会破坏GC中的session。

因此,我将 Session 默认更改为 cake,具有相同的超时。

Configure::write('Session', array(
   'defaults' => 'cake',
   'timeout' => 4320,
));

Configure::write('Security.level', 'medium');

然而,虽然这应该让我登录 3 天,但我发现我几乎没有 3 小时就需要再次登录。

session 超时是否存在我应该注意的问题,或者超时是以秒为单位(不是分钟?)还是像 1.3 一样受到 Security.level 的影响?我找不到任何关于它在 2.0 中如何工作的硬文档,或者可能导致问题的原因。

提前致谢。

答案:
对于任何后来进来并看到这一点的人。 2.0.5 中存在一个错误,即 session 超时未保存 Config.write() 中的值;

要解决,请更新到 2.0.6(或离开 beta 时更新到 2.1)

最佳答案

如果您正在使用安全组件,您也可以随时尝试将它们的过期时间更改为 3 小时:

$components = array(
    'Security' => array(
        'csrfExpires' => '+3 hour'
    )
);

我并不是说这是一个好主意,但它可以帮助您缩小问题的范围。如果您使用的是安全组件,这可能就是问题所在。

此外,Session.timeout 以分钟(而不是秒)为单位。

关于CakePHP 2.0 session 超时过早,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9276988/

相关文章:

java - 有没有办法在关闭时使用 ContextListener 关闭 contextDestroyed() 方法中的所有 ThreadLocals(保存 Session 对象)?

session - Gorilla session 不会在 Golang 中持续存在

cakephp - cakephp 2.0 比 1.3 快吗?

php - Cakephp $this->request->params ['pass' ][0] 是什么意思?

oracle - 将 Oracle 数据库与 CakePHP 2.0 结合使用

mysql - 最后 x 个博客条目 - 但每个用户只有一次

php - CakePHP:创建新的 HABTM 行而不是更新其他行

session - 如何增加 Plone 登录 session ?

asp.net - 有没有办法访问 ASP.NET 中当前 session 的集合?

session - PHP 7.2 中的自定义 session 处理程序函数