我正在构建一个移动应用程序,通过网络服务与我的 symfony2 应用程序对话 我找不到在特定 Controller /操作上禁用 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 documentation了解更多信息。
<小时 />编辑:更新了最新 Symfony 版本的答案,谢谢 naitsirch