如何解决CSRF令牌无效

时间:2018-06-05 10:34:07

标签: symfony csrf-protection

错误

  

CSRF令牌无效。请尝试重新提交表单。

此错误有时会出现在symfony2表单中,但刷新表单后会成功保存。

在保存表单时,有时会发生此错误。

我在每个浏览器中都尝试过同样的问题。

在刷新页面令牌时,在隐藏的输入字段中刷新但错误保持不变。

我用谷歌搜索并找到一些有用的文章建议

{{form_rest(form)}}

在关闭表单标记之前使用。

这是我的代码

Twig代码

<div id="{{ formID }}_container" class="main">
    <div class="page">
        <div id="{{ formID }}_output"></div>

        {% include 'Bundle:Form:required_msg.html.twig' %}
        {{form_start(form, { 'attr' : { 'id': formID } })}}

        <div style="display: none">
            {{form_rest(form)}}
        </div>

        {{form_end(form)}}
    </div>
</div>

我有这个隐藏的领域:

<input id="form_id" name="details_form[_token]"  value="somevalue" type="hidden">

这是我的表单数据:

details_form[_token]    value
details_form[age]   
details_form[gender]    F

这是请求回复:

{"success":false,"msg":"Form is invalid.","errors":[{"name":"[0]","message":"The CSRF token is invalid. Please try to resubmit the form."}]

我在Stack Overflow(The CSRF token is invalid. Please try to resubmit the form)上看到的其他一些答案说:

public function setDefaultOptions(OptionsResolverInterface $resolver) {
    $resolver->setDefaults(array(
        'options' => array(),
        csrf_protection'   => false
    ));
}

但是,我的要求是不要将csrf_protection标志设置为false。任何人都可以建议最好的方法来处理这个问题吗?

0 个答案:

没有答案