我在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()
,这导致了我的问题。删除迁移会话的调用解决了这个问题。
我想知道如果这是提交破坏了我的身份验证侦听器?