1

我正在使用 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 设置 1,这会使我的 cookie 过期 5 小时(?)。使用此设置,我将在 3 分钟内使 cookie 过期,我不明白,它应该是 1 x 300 秒 = 5 分钟。那是什么数学?

主要问题是这没有得到尊重,当我登录到我的网站时,我可以看到它生成了一个会话并将在 3 分钟内到期,但是一旦我登录并单击一个链接,我就会返回登录页面,这意味着我在不到 30 秒的时间内就获得了身份验证。

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

非常感谢。

4

1 回答 1

1

会话生命周期和 cookie 生命周期不相等。会话生命周期由下式计算

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

其中cookie 的生命周期由下式计算

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

因此,在安全级别上low,会话超时会1导致会话生命周期为300秒,cookie 生命周期为18000秒,即5几小时。

并且当使用0.01第二个超时时,会话生命周期将是3秒,而 cookie 生命周期将是180秒,因此您被注销的速度非常快。

正如您亲身经历的那样,一旦会话超时,无需担心更长的 cookie 生命周期(我想这是为了防止 cookie 在会话超时之前变得无效,但我可能错了), cookie正在失效并最终被覆盖

于 2013-06-23T11:36:28.130 回答