我浏览过类似的其他人的问题,但似乎没有什么能像我所遇到的那样。如果之前已经解决了这个问题,请随时引用我的另一篇文章。
我在用户进行身份验证时编写了一个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来坚持会话。如果用户点击退出按钮,我只想删除它。
谢谢!
答案 0 :(得分:4)
查看源代码,看起来这可能是错误或预期的行为。
CookieComponent类有一个内部__values数组,用于跟踪cookie信息。如果你调用delete('User.email'),它将从__values数组中删除'User'索引,包括索引下的所有数据。
但是,它只会取消设置名为“User”的cookie。下次Cake启动时,会看到名为“User.email”的cookie仍然存在并将其加载回__values数组。
假设这不是预期的行为,我写了一个修复程序,我会继续把它提交给Cake团队。