Symfony 4 удалить куки - PullRequest
       1

Symfony 4 удалить куки

0 голосов
/ 24 сентября 2019

У меня есть код установки cookie.

public function checkInviter(int $inviter)
{        
   $response = new RedirectResponse($this->generateUrl('app_homepage'));
   if ($inviter > 0) {
        $response->headers->setCookie(Cookie::create('_inviter_id', $inviter, new \DateTime("+ 30  days")));
        $response->sendHeaders();
    }

    return $response;

}

Далее при регистрации я хочу удалить / очистить его.Если я создаю новый ответ, то он не знает о наборе файлов cookie.Как работать с файлами cookie?

public function register() {
    $response = new Response();
    dump($response); // cleared Response
    $response->headers->removeCookie('_inviter_id', '/', null);
    $response->send();

    return $this->render('security/register.html.twig');
}

Я нашел ответ , но он не совсем точен.

Ответы [ 2 ]

0 голосов
/ 24 сентября 2019

Вы дублируете генерацию ответов: технически отправляются два разных ответа, когда вы генерируете один в своем контроллере, а Symfony создает второй во время $this->render.

Вам следует повторно использовать свой собственный ответобъект, установив его в качестве третьего параметра render, чтобы избежать проблем.Полный код может выглядеть следующим образом (повторное использование метода clearCookie, который вы уже нашли):

public function register() {
    $response = new Response();
    $response->headers->clearCookie('_inviter_id', '/', null);

    return $this->render('security/register.html.twig', [], $response);
}
0 голосов
/ 24 сентября 2019

Тестируя код, я нашел решение.Использовать

$response->headers->clearCookie('_inviter_id');

Это очищает значение и устанавливает новую дату истечения срока действия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...