所以,我尝试了很多东西,但是当使用谷歌浏览器中的开发者工具查看时,仍然总是使用持续时间设置为“会话”的Cookie。以下是我目前的设置:
core.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能够持续尽可能长的时间。你能告诉我我做错了吗?
答案 0 :(得分:0)
虽然我无法保证这会解决您的问题,但我可以解释如何正确配置会话。
首先设置Security.timeout
变量。这表示以秒为单位的超时值,但这不等于会话到期时间。此数字乘以常数值,具体取决于Security.level
变量的设置。
'high'= x 10, 'medium'= x 100, 'low'= x 300,
这就是给你过期时间的原因。例如,如果您的Session.timeout
为30,Security.level
为低,则您的会话将在30 * 300秒或150分钟后过期。
答案 1 :(得分: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!';
}
答案 2 :(得分:0)
我遇到了同样的问题(CakePHP 1.3.7),现在只有将持续时间放在write()方法中才能正常工作:
$this->Cookie->write ("cookie_name", "Some value", true, "+1 months");