首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Symfony2 DunglasAngularCsrfBundle测试DunglasAngularCsrfBundle api

如何使用Symfony2 DunglasAngularCsrfBundle测试DunglasAngularCsrfBundle api
EN

Stack Overflow用户
提问于 2016-01-25 09:57:12
回答 1查看 125关注 0票数 2

我将Symfony2与DunglasAngularCsrfBundle结合使用,当我运行PHpunit测试时,会得到错误{“代码”:403,“消息”:“不好的CSRF令牌”}。

如果使用http basic的auth用户

代码语言:javascript
复制
self::$user_client = static::createClient(array(), array(
    'PHP_AUTH_USER' => 'user1@mail.com',
    'PHP_AUTH_PW' => 'user1',
    'HTTP_HOST' => static::getHost()
));

此条件在EventListener\AngularCsrfValidationListener中返回false

代码语言:javascript
复制
if (!$value || !$this->angularCsrfTokenManager->isTokenValid($value)) {
        throw new AccessDeniedHttpException('Bad CSRF token.');
    }

在测试中生成的令牌不相等,我尝试下面的另一个方法:

代码语言:javascript
复制
protected function logIn($email)
{
$this->client = static::createClient();

$user = $this->client->getContainer()
    ->get('doctrine')
    ->getManager()
    ->getRepository('UserBundle:User')
    ->findOneByEmail($email);

$providerKey = static::$kernel->getContainer()->getParameter('fos_user.firewall_name');
$token = new UsernamePasswordToken($user, null, $providerKey, $user->getRoles());


$session = $this->client->getContainer()->get('session');
$session->set('_security_'.$providerKey, serialize($token));
$session->save();
$cookie = new Cookie($session->getName(), $session->getId());

$this->client->getCookieJar()->set($cookie);

}

令牌未创建。在Symfony\Component\Security\Csrf\CsrfTokenManager::isTokenValid:中返回false

代码语言:javascript
复制
 $this->storage->hasToken($token->getId())

请帮助解决这个问题,谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-28 13:00:53

解出

代码语言:javascript
复制
self::$client->request('GET', '/') 

在cookie中设置令牌

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34989606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档