Symfony 在侦听器中设置 cookie

Symfony setting a cookie in a listener

如何在不中断其他事情和重定向的情况下在侦听器中设置 cookie?

我试图在 InteractiveLoginEvent 上设置它。我试着这样设置:

$response = new Response();
$response->headers->setCookie(new Cookie('foo', 'bar'));
$response->send();

Cookie 是这样设置的,但之后我得到空白页面,并且在登录后它没有重定向到登录页面。我该如何解决?

尝试使用 RedirectResponse:

$response = new RedirectResponse('url_to_redirect_to');
$response->headers->setCookie(new Cookie('foo', 'bar'));
$response->send();

它将设置一个 cookie 并重定向到您指定的 url。还可以考虑将 Router 注入您的侦听器以生成正确的 url.

如果您只使用 PHP 的方法 setcookie() 而不是生成重定向会怎样?

当您进行重定向时,页面可能会触发无穷无尽的重定向错误(取决于您的操作),因此如果您只使用此方法,那么您就可以了,并且您的 cookie 将被正确设置。

我用setcookie() when I need to deal with POST variables, which it seems to be not possible with RedirectResponse.