Actualmente estoy en el proceso de migrar un proyecto 2.0. * A la versión 2.1 beta actual de Symfony.Autenticación en pruebas funcionales en Symfony 2.1
En mis pruebas funcionales Actualmente tengo el código para crear un cliente con autenticación:.
$client = // create a normal test client
$role = 'ROLE_USER';
$firewallName = 'main';
$user = // pull a user from db
$client->getCookieJar()->set(new \Symfony\Component\BrowserKit\Cookie(session_name(), true));
$token = new UsernamePasswordToken($user, null, $firewallName, array($role));
self::$kernel->getContainer()->get('session')->set('_security_' . $firewallName,
serialize($token));
esto funciona como se espera en 2.0 * pero no en 2.1, los datos no se consiga el conjunto de la sesión.
¿Alguna idea?
Editar (añadiendo más información):
parece que el problema radica en el archivo "Symfony \ Component \ Security \ HTTP \ Firewall \ ContextListener" en el método "onKernelResponse". No es este código:
if ((null === $token = $this->context->getToken()) || ($token instanceof AnonymousToken)) {
$session->remove('_security_'.$this->contextKey);
} else {
$session->set('_security_'.$this->contextKey, serialize($token));
}
en mi caso el caso de "símbolo $ instanceof AnonymousToken" es cierto, y debido a que la clave de sesión se elimina. si hago un comentario sobre ese código todo funciona como se espera.
Supongo que mi nueva pregunta es: ¿Qué puedo hacer para que el token no sea anónimo?
estoy usando un fragmento muy similares a los suyos para iniciar sesión un usuario para las pruebas funcionales particulares También estoy actualizando a 2.1 y sería genial hacerlo funcionar, ya que muchas de mis pruebas funcionales ahora están fallando. –
Veo eso en ContextListener.php, ac todo está hecho a $ this-> context-> setToken (null), y eso se llama porque $ session === null? Mmm ... –
Cuando comento ContextListener.php: línea 77 - $ this-> context-> setToken (null), ¡mis pruebas funcionan perfectamente! ¡Entonces quizás sea una pista! –