CakePHP删除Cookie问题

时间:2011-04-13 20:32:41

标签: cakephp cakephp-1.3

我浏览过类似的其他人的问题,但似乎没有什么能像我所遇到的那样。如果之前已经解决了这个问题,请随时引用我的另一篇文章。

我在用户进行身份验证时编写了一个cookie,用于在本地存储一些基本用户信息。当用户注销时,我试图删除cookie变量,但不会删除。如果我使用destroy方法,那么cookie就会被移除,但我很好奇我在这里做错了什么:

Cookie是这样编写的并且正在运行:

function login(){
    if($this->Auth->login($this->data)){
        $this->Cookie->write('User.email',$this->data['User']['email'],true, '1 day');
    }
}

但是,使用删除功能不起作用......

function logout(){
    $this->Cookie->delete('User');
    if($this->Auth->logout($this->data)){
        //auto redirected
    }
}

如果我用destroy替换delete,它就可以了。这是不行的,因为cookie数据是加密的?我可能会做一些愚蠢的事,但我似乎无法弄明白。

我正在使用此Cookie来坚持会话。如果用户点击退出按钮,我只想删除它。

谢谢!

1 个答案:

答案 0 :(得分:4)

查看源代码,看起来这可能是错误或预期的行为。

CookieComponent类有一个内部__values数组,用于跟踪cookie信息。如果你调用delete('User.email'),它将从__values数组中删除'User'索引,包括索引下的所有数据。

但是,它只会取消设置名为“User”的cookie。下次Cake启动时,会看到名为“User.email”的cookie仍然存在并将其加载回__values数组。

假设这不是预期的行为,我写了一个修复程序,我会继续把它提交给Cake团队。