在AJAX提交禁用的symfony 2 CSRF令牌保护 [英] Disable symfony 2 csrf token protection on ajax submit

查看:635
本文介绍了在AJAX提交禁用的symfony 2 CSRF令牌保护的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要建一个移动应用程序通过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的文档


编辑:更新答案最新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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆