【问题标题】:Disable CSRF protection in form generated by Sonata Admin在 Sonata Admin 生成的表单中禁用 CSRF 保护
【发布时间】:2017-01-01 18:05:58
【问题描述】:

在 Sonata Admin 中,我需要在某些表单中禁用 CSRF 令牌,但有时我不想创建 Form Type 类,而是选择让 Sonata 生成表单,如下所示:

/** @var $form \Symfony\Component\Form\Form */
$form = $this->admin->getForm();

如何从此时禁用 CSRF 令牌?

【问题讨论】:

    标签: symfony sonata-admin


    【解决方案1】:

    如果没有 Form Type 类,更改 CSRF 字段的最佳方法是在 admin 类中。为此,可以重写此函数:

    public function getFormBuilder() {
        $this->formOptions['data_class'] = $this->getClass();
        $this->formOptions['csrf_protection'] = false;
        $formBuilder = $this->getFormContractor()->getFormBuilder(
            $this->getUniqid(),
            $this->formOptions
        );
        $this->defineFormBuilder($formBuilder);
        return $formBuilder;
    }
    

    【讨论】:

    • 在 MyBundle\Admin\AbstractAdmin.php 非常感谢!
    【解决方案2】:

    我认为这是不可能的,因为从 \Symfony\Component\Form\Form 实例您可以访问实现 FormConfigInterface 的对象 ($form->getConfig()):您可以调用它 getOptionsgetOption 但没有 setOption 方法.

    【讨论】:

    • 也许还有其他方法,无需在整个应用中禁用 CSRF 令牌保护
    猜你喜欢
    • 2012-04-08
    • 2015-05-15
    • 2014-04-24
    • 2017-02-10
    • 2018-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-28
    相关资源
    最近更新 更多