我需要在用户退出时删除一些额外的Cookie。 我该怎么做?
我在config.yml中有这个
unsafeRead
但是“delete_cookies”选项不起作用。 我也有退出处理程序以防万一。我不知道该写些什么。
答案 0 :(得分:2)
确保您的配置位于其中一个防火墙部分下的 security.yml 文件中,并以full security configuration for 2.8结帐作为参考:
# app/config/security.yml
security:
firewalls:
somename:
logout:
delete_cookies:
a: { path: null, domain: null }
b: { path: null, domain: null }
handlers: [some.service.id, another.service.id]
success_handler: some.service.id
anonymous: ~
正如您在注销成功处理程序中提到的,您可以执行一些额外的处理:
如果您在退出后需要做一些更有趣的事情,那么 可以通过添加success_handler键来指定注销成功处理程序 并将其指向实现的类的服务ID LogoutSuccessHandlerInterface。请参阅安全配置参考。
查看\Symfony\Component\Security\Http\Logout\CookieClearingLogoutHandler
,通过响应标题删除所有请求的Cookie
/**
* Implementation for the LogoutHandlerInterface. Deletes all requested cookies.
*
* @param Request $request
* @param Response $response
* @param TokenInterface $token
*/
public function logout(Request $request, Response $response, TokenInterface $token)
{
foreach ($this->cookies as $cookieName => $cookieData) {
$response->headers->clearCookie($cookieName, $cookieData['path'], $cookieData['domain']);
}
}
因此,在你的处理程序中你可以做类似的事情:
$response = new Symfony\Component\HttpFoundation\Response();
$response->headers->clearCookie('nameOfTheCookie');
$response->send();