首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Symfony 2不删除注销时的-me cookie。

Symfony 2不删除注销时的-me cookie。
EN

Stack Overflow用户
提问于 2015-11-15 17:28:17
回答 2查看 1.1K关注 0票数 3

我的目标是以编程方式从控制器中注销。我用this nice solution。除了未删除的LONGSESS (改名为REMEMBERME) cookie外,一切正常工作。删除但未:)

注销控制器代码:

代码语言:javascript
复制
$response = $this->redirectToRoute('homepage');
$response->headers->clearCookie('LONGSESS');
return $response;

那就叫这个行动吧。

  1. 请求此操作的标头(如预期的): Cookie SESS=n4jbl1m61l6bceesbeusrbq044;SESS=n4jbl1m61l6bceesbeusrbq044
  2. 此操作的响应标头(如预期的): SESS=ai1gt79r49o184du3tknv7tdf6;path=/;domain=.myhost.local Set-Cookie:LONGSESS=deleted;expires=Thu,01-1970 1-1970 00:00:01 GMT;Max-Age=0;path=/;httponly Set-Cookie:SESS=删除;expires=Thu,01-1-1970 00:00:01 GMT;最大年龄=0;path=/;
  3. 重定向标头(如预期): 位置:/app_dev.php/
  4. 下一个请求标题到主页(不像预期的那样- LONGSESS值与前一个请求相同): Cookie:LONGSESS=QXBwQnVuZGxlXEVudGl0eVxVc2VyOmRYTmxja0IxYzJWeUxtTnZiUT09OjE0NDgyMDMyMjQ6ZTFhNzBlNGEyMWM4NGM3N2UzYmI3ZmJiNWIzMGM5MDg2ZDAyOWY1ZGVhMWI4NTYyNGQ0OTJmNjVmNmRjOTY2NQ%3D%3D;SESS=ai1gt79r49o184du3tknv7tdf6

因此,用户不会注销。

怎么可能呢?LONGSESS cookie设置为deleted,过期但下一个请求的值相同?

EN

回答 2

Stack Overflow用户

发布于 2015-11-15 18:46:37

解决方案是在domain方法调用中设置第三个参数clearCookie。它必须等于会话设置中的域:

代码语言:javascript
复制
framework:
    session:
        cookie_domain: YOUR-DOMAIN.COM

代码语言:javascript
复制
firewalls:
    your_firewall:
            remember_me:
                domain: YOUR-DOMAIN.COM

所以,正确的方法:

代码语言:javascript
复制
$response->headers->clearCookie('LONGSESS', '/', 'YOUR-DOMAIN.COM');
票数 1
EN

Stack Overflow用户

发布于 2016-05-29 08:19:45

你试过:

代码语言:javascript
复制
$response->sendHeaders();

在以下情况下:

代码语言:javascript
复制
$response->headers->clearCookie('LONGSESS');
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33722635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档