Symfony2:设置cookie

时间:2012-07-19 18:35:55

标签: php cookies symfony

我正在尝试在登录控制器中设置一个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's 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没有。

2 个答案:

答案 0 :(得分:18)

而不是:

$response->send();

尝试使用:

$response->sendHeaders();

在此之后你应该能够重定向。

答案 1 :(得分:17)

默认情况下Symfony\Component\HttpFoundation\Cookie创建为HttpOnly,这会触发支持浏览器的安全措施;这有助于缓解javascript中可能发生的某些XSS攻击。

在这样的浏览器集$httpOnly参数中公开cookie到false

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

值得注意的是,在此次编辑时,框架配置为默认情况下使用HttpOnly cookie:请参阅cookbook (cookie_httponly)