我最近切换到 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/