php - 注销时 Symfony 2 不会删除记住我的 cookie

标签 php symfony cookies

我的目标是以编程方式从 Controller 注销。我用 this nice solution .除了未删除 LONGSESS(重命名为 REMEMBERME)cookie 之外,一切正常。它删除了但没有:)

在 Controller 代码中注销:

$response = $this->redirectToRoute('homepage');
$response->headers->clearCookie('LONGSESS');
return $response;

因此,调用此操作。

  1. 此操作的请求 header (如预期):

    Cookie SESS=n4jbl1m61l6bceesbeusrbq044; LONGSESS=QXBwQnVuZGxlXEVudGl0eVxVc2VyOmRYTmxja0IxYzJWeUxtTnZiUT09OjE0NDgyMDMyMjQ6ZTFhNzBlNGEyMWM4NGM3N2UzYmI3ZmJiNWIzMGM5MDg2ZDAyOWY1ZGVhMWI4NTYyNGQ0OTJmNjVmNmRjOTY2NQ%3D%3D
    
  2. 此操作的响应 header (如预期):

    Set-Cookie:SESS=ai1gt79r49o184du3tknv7tdf6; path=/; domain=.myhost.local
    Set-Cookie:LONGSESS=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0; path=/; httponly
    Set-Cookie:SESS=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0; path=/; httponly
    
  3. 重定向 header (如预期):

    Location:/app_dev.php/
    
  4. 主页的下一个请求 header (与预期不同 - LONGSESS 值与上一个请求相同):

    Cookie:LONGSESS=QXBwQnVuZGxlXEVudGl0eVxVc2VyOmRYTmxja0IxYzJWeUxtTnZiUT09OjE0NDgyMDMyMjQ6ZTFhNzBlNGEyMWM4NGM3N2UzYmI3ZmJiNWIzMGM5MDg2ZDAyOWY1ZGVhMWI4NTYyNGQ0OTJmNjVmNmRjOTY2NQ%3D%3D; SESS=ai1gt79r49o184du3tknv7tdf6
    

所以用户没有登出。

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

最佳答案

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

framework:
    session:
        cookie_domain: YOUR-DOMAIN.COM

firewalls:
    your_firewall:
            remember_me:
                domain: YOUR-DOMAIN.COM

所以,正确的做法是:

$response->headers->clearCookie('LONGSESS', '/', 'YOUR-DOMAIN.COM');

关于php - 注销时 Symfony 2 不会删除记住我的 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33722635/

相关文章:

javascript - 如何使用 JavaScript 和 HTML 从 REST API 选择特定数据

symfony - 使用 jms/serializer 反序列化对象数组

javascript - 在for循环中设置cookie

c# - 无法在 asp.net mvc 中更新 cookie

php - 如何在 SabreDAV PHP 服务器中为 CalDAV 实现自定义 ACL

php - 比较两列之间的日期时 LEFT JOIN 不起作用

javascript - V8JS 时区测试失败

php - 测试 Symfony2 session

angularjs - Webpack FOSJsRoutingBundle 与 Symfony Flex 和 Angular 的集成

javascript - chrome 更改 cookie 路径