0

所以,我已经尝试了很多东西,但在使用 Google Chrome 中的开发人员工具查看时,仍然总是得到持续时间设置为“会话”的 Cookie。这是我当前的设置:

核心.php:

Configure::write('Session.cookie', 'session');
Configure::write('Session.timeout', '3600');
Configure::write('Session.start', true);
Configure::write('Security.level', 'high');

users_controller.php

$this->Cookie->write('xHi1PeWmAw', $user_record['User']['id']);

我尝试使用 $this->Cookie->time = 3600; 更改 Security.level,Session.timeout;并结合所有这些,但我似乎无法改变那个持续时间。我还尝试了短时和长时,因为理想情况下我希望这个 cookie 尽可能长。你能告诉我我做错了什么吗?

4

3 回答 3

0

虽然我不能保证这会解决您的问题,但我可以解释如何正确配置会话。

首先你设置你的Security.timeout变量。这表示以秒为单位的超时值,但这不等于您的会话到期时间。Security.level根据变量 的设置,这个数字乘以一个常数值。

“高” = x 10,“中” = x 100,“低” = x 300,

这就是为您提供到期时间的原因。例如,如果您的 aSession.timeout为 30,aSecurity.level为低,您的会话将在 30*300 秒或 150 分钟后到期。

于 2010-10-19T03:28:44.187 回答
0

如果您使用 cookie 作为会话,则时间设置为 0。这意味着它设置为在浏览器关闭时过期。您可以尝试在控制器中更改此数字,如下面的代码所示。看看这是否有所作为。我没有对此进行测试,但值得一试。

var $components = array('Cookie');
function beforeFilter() {
   $this->Cookie->name = 'baker_id';
   $this->Cookie->time = 3600; // or '1 hour' //IF 0 THIS IS A SESSION COOKIE
   $this->Cookie->domain = 'example.com';
   $this->Cookie->secure = true; //i.e. only sent if using secure HTTPS
   $this->Cookie->key = 'qSI232qs*&sXOw!';
}
于 2010-10-19T14:30:17.827 回答
0

我有同样的问题(CakePHP 1.3.7),现在它只有在我将持续时间放在 write() 方法中时才有效:

$this->Cookie->write ("cookie_name", "Some value", true, "+1 months");
于 2011-05-09T15:30:13.260 回答