2012-07-19 15 views
10

Estoy tratando de establecer una cookie dentro de un controlador de inicio de sesión para lograr el sistema "recordarme". A pesar de que he usado el código exacto que encontré en la web, las cosas para mí están yendo mal. Espero que puedas ayudarme a descubrir lo que me estoy perdiendo.Symfony2: configuración de una cookie

Vamos a pasar por el código:

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'); 
} 

que incluyen los siguientes:

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

Tenga en cuenta que el registro en-funciona bien, la sesión ha sido creado, pero la cookie no tiene.

Respuesta

17

De manera predeterminada, Symfony\Component\HttpFoundation\Cookie se crea como HttpOnly, lo que activa medidas de seguridad en navegadores compatibles; esto ayuda a mitigar ciertos ataques XSS posibles en JavaScript.

Para exponer la cookie en un navegador de estos conjuntos $httpOnly argumento para false:

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

Vale la pena señalar que en el momento de esta edición el marco está configurado para no uso HttpOnly cookies de forma predeterminada: ver el cookbook (cookie_httponly).

+0

Eso funciona. Gracias m2mdas. –

15

En lugar de:

$response->send(); 

tratan de usar:

$response->sendHeaders(); 

Después de esto, usted debe ser capaz de redirigir.

+0

Gracias, esto resolvió un problema realmente extraño. –

+0

Gracias, me ayudó también – Shaolin

Cuestiones relacionadas