我在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');
}
}
我的表格:
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
));
}
但会出现另一个错误:此表单不应包含额外字段。因为令牌的隐藏输入,它已经在形式中了,我不知道要删除它。
三江源!
答案 0 :(得分:0)
我有一个自定义身份验证提供程序,described here。在Listener的handle()
方法的某个时刻,我正在调用$request->getSession()->migrate()
,这对我来说是个问题。删除迁移会话的调用解决了问题。
我想知道this was the commit是否破坏了我的身份验证监听器?