CSRF令牌丢失

时间:2016-03-12 13:17:04

标签: symfony twig

这让我发疯了。

获取这些代码片段

class CommonController extends Controller
{
    /**
     * Create delete form
     *
     * @param int $id
     *
     * @return Form
     */
    protected function createDeleteForm($id)
    {
        return $this->createFormBuilder(['id' => $id])
            ->add('id', \Symfony\Component\Form\Extension\Core\Type\HiddenType::class)
            ->getForm()
        ;
    }
}

{% if delete_path is defined %}
    <form id="delete" action="{{ path(delete_path, {id: entity.id}) }}" method="POST" class="pull-right" style="margin-top: -43px; margin-right: 10px;">
        {{ form_widget(deleteForm) }}
        <button type="submit" class="btn btn-default">{{ delete_form_submit_button|trans }}</button>
    </form>
{% endif %}

请注意,这不是伪代码,是我在我的朋友要求我修复的应用程序中发现的真实代码。

我的问题是......为什么在视图中没有显示CSRF令牌?
因此,由于缺少csrf标记,我的表单提交始终无效

更多详情

  • Symfony版本:2.8
  • 即使我使用form_rest令牌仍然不在那里,所以它似乎根本没有生成,但是,在引擎盖下,它应该在那里(isValid()

修改

  • 如果我转储deleteForm_token就在那里,但如果我尝试使用form_widgetform_rowform_rest则不会显示
  • 如果我不使用form_widget(deleteForm)form_row(deleteForm.id),则会显示令牌。

0 个答案:

没有答案