Skip to main content
 首页 » 编程设计

ajax之在 ajax 提交上禁用 symfony 2 csrf token 保护

2024年04月30日10freeliver54

我正在构建一个移动应用程序,通过网络服务与我的 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