在AJAX提交禁用的symfony 2 CSRF令牌保护 [英] Disable symfony 2 csrf token protection on ajax submit
问题描述
我要建一个移动应用程序通过Web服务跟我的Symfony2的应用 我无法找到一个方法来禁用一个特定的控制器/动作CSRF保护
我要张贴的登记数据,以这个动作和使用SF2表单验证。我没有在我的手机应用程序调用的形式
不能在行动中改变容器的参数,抛出一个异常,因为它是一个冰冻的参数......
我不希望禁用整个我的应用形式的保护
任何线索?
谢谢!
更新:在symfony的2.1.x
/ **
* {@inheritdoc}
* /
公共职能setDefaultOptions(OptionsResolverInterface $解析器)
{
$ resolver->使用setdefaults(阵列(
csrf_protection'=>假,
));
}
如果你正在寻找一点更容易和更快的解决方案在回答上面所建议的,方法如下:
< PHP
// ...
使用Symfony的\分量\表\ AbstractType;
使用Symfony的\分量\表\ FormBuilder;
使用Symfony的\分量\ OptionsResolver \ OptionsResolver;
类MyType的扩展AbstractType
{
// ...
公共职能configureOptions(OptionsResolver $解析器)
{
$ resolver->使用setdefaults(阵列(
csrf_protection'=>假,
));
}
}
..或者,如果你使用的Symfony 2.0 *:
< PHP
// ...
使用Symfony的\分量\表\ AbstractType;
使用Symfony的\分量\表\ FormBuilder;
类MyType的扩展AbstractType
{
// ....
公共职能getDefaultOptions(数组$选项)
{
$选项=父:: getDefaultOptions($选择);
$选项['csrf_protection'] = FALSE;
返回$选项;
}
}
编辑:更新答案最新Symfony的版本,感谢 naitsirch
i'm building a mobile app talking to my symfony2 app via webservices I can't find a way to disable csrf protection on a specific controller/action
i want to post registration data to this action and use sf2 form validation. I do not call the form in my mobile app
Can't change container parameters in action, throw an exception because it is a frozen parameter...
I do not want to disable form protection for whole my application
any clue ?
thanks !
update: with symfony 2.1.x
/**
* {@inheritdoc}
*/
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'csrf_protection' => false,
));
}
If you're looking for a bit easier and faster solution than suggested in answer above, here's how:
<?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,
));
}
}
.. or if you're using 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;
}
}
Consult the Symfony documentation for additional information.
Edit: updated answer to latest Symfony version, thanks naitsirch
这篇关于在AJAX提交禁用的symfony 2 CSRF令牌保护的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!