我正在构建一个通过webservices与symfony2应用程序对话的移动应用程序,我找不到在特定控制器/操作上禁用csrf保护的方法
我想将注册数据发布到此操作并使用sf2表单验证。我没有在移动应用程序中致电该表格
无法在操作中更改容器参数,因为它是冻结参数而引发异常…
我不想禁用整个应用程序的表单保护
有什么线索吗?
谢谢 !
更新:使用symfony 2.1.x
/** * {@inheritdoc} */ public function setDefaultOptions(OptionsResolverInterface $resolver) { $resolver->setDefaults(array( 'csrf_protection' => false, )); }
如果您要寻找的答案比上面的答案中建议的更简单,更快,请按以下步骤操作:
<?php // ... use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilder; use Symfony\Component\OptionsResolver\OptionsResolver; class MyType extends AbstractType { // ... public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults(array( 'csrf_protection' => false, )); } }
..或如果您使用的是旧版本(Symfony 2.0。*):
<?php // ... use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilder; class MyType extends AbstractType { // .... public function getDefaultOptions(array $options) { $options = parent::getDefaultOptions($options); $options['csrf_protection'] = false; return $options; } }
有关其他信息,请查阅Symfony文档。