Symfony2 - 清空CSRF令牌

时间:2015-02-05 07:22:02

标签: php symfony csrf

我部署了一个Symfony2应用程序,但所有表单都有空的csrf标记。这个html来自firebug。如您所见,标记已正确呈现,但未分配任何值。

<input type="hidden" value="" name="category[_token]" id="category__token">

在我的控制器中:

$form = $this->createForm(new CategoryForm(), new Category());
$form->handleRequest($request);

if ($form->isValid()) {
    (...)
}

在模板中,表单位于bootstrap 3模式内。

{{ form_start(form) }}
        <div class="modal-dialog">
            <div class="modal-content">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
                    <h4 class="modal-title" id="myModalLabel">Voeg een tariefplan toe</h4>
                </div>
                <div class="modal-body">
                    <div class="form-group">
                        {{ form_label(form.name) }}
                        {{ form_widget(form.name) }}
                    </div>
                    <div class="form-group">
                        {{ form_label(form.parent) }}
                        {{ form_widget(form.parent, {'attr':{ 'class': 'form-control' }}) }}
                    </div>
                    <div class="form-group">
                        {{ form_label(form.sizes) }}
                        {{ form_widget(form.sizes, {'attr':{ 'class': 'form-control' }}) }}
                    </div>
                    <div class="form-group">
                        {{ form_label(form.description) }}
                        {{ form_widget(form.description, {'attr':{ 'class': 'form-control' }}) }}
                    </div>

                    {{ form_widget(form._token) }}
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-default" data-dismiss="modal">Annuleren</button>
                    {{ form_widget(form.save, {'attr':{ 'class': 'btn btn-primary' }}) }}
                </div>
            </div>
        </div>
{{ form_end(form) }}

我还为CategoryForm类创建了一个要点:http://goo.gl/6NWTkB

有谁知道我在这里失踪了什么?

2 个答案:

答案 0 :(得分:0)

您必须提供以下值:

<input type="hidden" value={{ csrf_token('category') }}"" name="category[_token]" id="category__token">

答案 1 :(得分:0)

一些想法:

json.loads(tweet)应输出您的令牌,因此无需拥有:{{ form_end(form) }}

如果你有一个非常大的表单,php可能会截断你的请求变量。请查看{{ form_widget(form._token) }}中的max_input_vars。默认值是1000我相信。