Подтвердить что ты не робот

Symfony2: настройка файла cookie

Я пытаюсь установить cookie в контроллере входа в систему, чтобы добиться "помнить меня". Несмотря на то, что я использовал точный код, который я нашел в Интернете, все для меня не так. Надеюсь, вы поможете мне разобраться в том, что мне не хватает.

Пропустите код:

public function loginAction(Request $request) {
// Receiving the login form
// Get Doctrine, Get EntityManager, Get Repository
if(/* form information matche database information */) {
     // Creating a session => it OK
     // Creating the cookie
     $response = new Response();
     $response->headers->setCookie(new Cookie("user", $user));
     $response->send();
     $url = $this->generateUrl('home');
     return $this->redirect($url);

} else 
     return $this->render('***Bundle:Default:Login.html.php');
}

Я включил их:

use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Cookie;

Обратите внимание, что вход в систему работает нормально, сеанс был создан, но cookie не имеет.

4b9b3361

Ответ 1

По умолчанию Symfony\Component\HttpFoundation\Cookie создается как HttpOnly, который включает меры безопасности в поддержку браузеров; это помогает смягчить некоторые атаки XSS в javascript.

Чтобы выставить файл cookie в таком браузере, установите для параметра $httpOnly значение false:

new Cookie('user', $user, 0, '/', null, false, false); //last argument

Стоит отметить, что во время этого редактирования фреймворк настроен на то, чтобы по умолчанию не использовать HttpOnly cookies: см. cookbook (cookie_httponly).

Ответ 2

Вместо:

$response->send();

попробуйте использовать:

$response->sendHeaders();

После этого вы сможете перенаправить.