【问题标题】:Symfony functional test - controller method getUser returns nullSymfony 功能测试 - 控制器方法 getUser 返回 null
【发布时间】:2015-04-18 16:49:45
【问题描述】:

我的功能测试中有用于用户登录的方法:

/**
 * @param User $user
 */
private function logIn(User $user)
{
    $firewallName = 'site';
    $session = $this->client->getContainer()->get('session');
    $securityContext = $this->client->getContainer()->get('security.context');

    $token = new UsernamePasswordToken($user, null, 'main', array('ROLE_USER'));
    $securityContext->setToken($token);

    $session->set('_security_'.$firewallName, serialize($token));
    $session->save();

    $cookie = new Cookie($session->getName(), $session->getId());
    $this->client->getCookieJar()->set($cookie);
}

当我尝试在控制器中获取用户时,它返回 null。

public function editProfile(Request $request)
{
    $user = $this->getUser(); //returns null
    ...
}

logIn方法错了吗?

更新

测试方法:

public function testProfile() {
    ...
    $user = $this->createUser();
    $this->logIn($user);
    $this->client->request('POST', '/profile/edit', $data);
    ...
}

【问题讨论】:

  • 你是如何获得控制器对象的?顺便说一句,security.context 已贬值。

标签: php symfony phpunit


【解决方案1】:

尝试改变:

 $token = new UsernamePasswordToken($user, null, 'main', array('ROLE_USER'));

 $token = new UsernamePasswordToken($user, null, $firewallName, array('ROLE_USER'));

【讨论】:

    猜你喜欢
    • 2022-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-08
    • 2021-08-16
    • 2021-03-24
    • 1970-01-01
    相关资源
    最近更新 更多