CakePHP - 会话超时 - 空闲用户

时间:2013-06-21 18:32:07

标签: php cakephp cakephp-1.3 session-timeout

我正在使用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秒的时间内进行了身份验证。

我试图为测试设置这么低的值,我知道高中安全值会在请求之间重新生成会话但我想了解发生了什么。

非常感谢。

1 个答案:

答案 0 :(得分:1)

会话生命周期和cookie生命周期不相等。 Session lifetime

计算
Security::inactiveMins() * Configure::read('Session.timeout')

其中cookie lifetime

计算
Configure::read('Session.timeout') * (Security::inactiveMins() * 60)

因此,在low的安全级别上,会话超时1会导致会话生存期为300秒,Cookie生存期为18000秒,即5小时。

当使用0.01秒超时时,会话生存期为3秒,cookie生存期为180秒,因此您的登录速度非常快。

正如您自己所经历的那样,没有必要担心更长的cookie生命周期(我想这是为了防止cookie在会话超时之前变为无效,但我可能会错误),一旦会话超时时,Cookie为being invalidated,最后为overwritten