如何解决CSRF令牌无效

问题描述 投票:2回答:1

错误

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."}]

我在堆栈溢出(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。谁能建议最好的方法来解决此问题?

symfony csrf-protection
1个回答
0
投票

ytarrr拥有!这是真的吗????

© www.soinside.com 2019 - 2024. All rights reserved.