我正在使用Cakephp 1.3并且在会话超时方面遇到很多麻烦。
所以,这是我的core.php文件。
Configure::write('Session.save', 'cake');
Configure::write('Session.cookie', 'TESTING');
Configure::write('Session.timeout', '0.01');
Configure::write('Session.start', true);
Configure::write('Session.checkAgent', false);
Configure::write('Security.level', 'low');
第一个问题出现在session.timwout上,它被指定为SECONDS,但是如果我使用low,则表示我的cookie过期时间为5小时(?)。有了这个设置,我得到3分钟的cookie到期,我不明白,它应该是1 x 300秒= 5分钟。这是什么数学?
主要的问题是这没有得到尊重,当我登录我的网站时,我可以看到它生成一个会话并将在3分钟后过期,但是一旦我登录并点击链接我就会回到登录页面,这意味着我在不到30秒的时间内进行了身份验证。
我试图为测试设置这么低的值,我知道高中安全值会在请求之间重新生成会话但我想了解发生了什么。
非常感谢。
答案 0 :(得分:1)
会话生命周期和cookie生命周期不相等。 Session lifetime由
计算Security::inactiveMins() * Configure::read('Session.timeout')
计算
Configure::read('Session.timeout') * (Security::inactiveMins() * 60)
因此,在low
的安全级别上,会话超时1
会导致会话生存期为300
秒,Cookie生存期为18000
秒,即5
小时。
当使用0.01
秒超时时,会话生存期为3
秒,cookie生存期为180
秒,因此您的登录速度非常快。
正如您自己所经历的那样,没有必要担心更长的cookie生命周期(我想这是为了防止cookie在会话超时之前变为无效,但我可能会错误),一旦会话超时时,Cookie为being invalidated,最后为overwritten。