首页 > 解决方案 > 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);

我缺少什么让它在树枝上工作?

标签: phpsymfonytwig

解决方案


我有一个类似的问题(正确登录)最终为我解决的问题是更改我的登录方式,这是我的授权客户,您可以根据自己的目的进行调整。(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;
}

推荐阅读