Symfony 2.CSRF令牌无效


Symfony 2. CSRF token is invalid

我在Symfony2中有一个令牌形式的问题。(2.7.0)

行动:

public function registerProcessAction(Request $request){
    $form = $this->createForm(new RegistrationType(), new Registration());
    $form->handleRequest($request);
    if ($form->isValid()) {
        die('valid');
    }
    else{
        die('invalid');
    }
}

And my Form:

public function configureOptions(OptionsResolver $resolver)
{
    $resolver->setDefaults(array(
        'data_class'        => 'My'Bundle'Entity'User'
    ));
}
当我测试表单时,总是显示相同的错误:" CSRF令牌无效。请尝试重新提交表单"。我确定输入是隐藏的它在表单中。这是视图:
<?php
echo $view['form']->start($form);
echo $view['form']->widget($form);
echo $view['form']->end($form);
?>

有人能帮我吗?

我测试了禁用csrf保护,像这样:

行动:

$form = $this->createForm(new RegistrationType(), new Registration(), array('csrf_protection' => false));

形式:

public function configureOptions(OptionsResolver $resolver)
{
    $resolver->setDefaults(array(
        'data_class'        => 'My'Bundle'Entity'User',
        'csrf_protection'   => false
    ));
}

但是出现了不同的错误:这个表单不应该包含额外的字段。因为令牌的隐藏输入,它还在表单中,我不知道要删除它

谢谢!

我有一个自定义身份验证提供程序,如下所述。在侦听器的handle()方法的某个点上,我调用了$request->getSession()->migrate(),这导致了我的问题。删除迁移会话的调用解决了这个问题。

我想知道如果这是提交破坏了我的身份验证侦听器?