php - symfony 测试 app.user 在树枝中为空
问题描述
我在树枝中使用 app.user。当我编写测试时,我有一个用户登录,它在控制器中工作正常。但是在twig中,访问app.user时,它为null。
这是我在测试单元中记录用户的方式:
$user = new User;
$user->setRole('ROLE_ADMIN');
$user->setUsername('admin');
$firewallContext = 'main';
$token = new UsernamePasswordToken(serialize($user), null, $firewallContext, array('ROLE_ADMIN'));
$session->set('_security_'.$firewallContext, serialize($token));
$session->save();
$cookie = new Cookie($session->getName(), $session->getId());
$this->client->getCookieJar()->set($cookie);
我缺少什么让它在树枝上工作?
解决方案
我有一个类似的问题(正确登录)最终为我解决的问题是更改我的登录方式,这是我的授权客户,您可以根据自己的目的进行调整。(symfony 版本:2.8)
private function createAuthorizedClient()
{
$client = static::createClient();
$container = static::$kernel->getContainer();
$session = $container->get('session');
$token = new UsernamePasswordToken('john.doe', null, 'main', array('ROLE_ADMIN'));
$session->set('_security_main', serialize($token));
$session->save();
$client->getCookieJar()->set(new Cookie($session->getName(), $session->getId()));
return $client;
}