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 не имеет.
Ответы
Ответ 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();
После этого вы сможете перенаправить.