当前位置: 首页 > 面试题库 >

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

戚高洁
2023-03-14
问题内容

每次尝试提交表单时,我都会收到此错误消息:

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

我的表单代码是这样的:

<form novalidate action="{{path('signup_index')}}" method="post" {{form_enctype(form)}} role="form" class="form-horizontal">
    <div class="form-group">
        {{ form_label(form.email, 'Email', {'label_attr': {'class': 'col-md-1 control-label'}}) }}
        {{ form_widget(form.email, {'attr': {'class': 'col-md-2'}}) }}
        {{ form_errors(form.email) }}
    </div>

    <div class="form-group">
        {{ form_label(form.nickname, 'Nickname', {'label_attr': {'class': 'col-md-1 control-label'}}) }}
        {{ form_widget(form.nickname, {'attr':{'class': 'col-md-2'}}) }}
        {{ form_errors(form.nickname, {'attr': {'class': 'col-md-3'}}) }}
    </div>
    <div class="form-group">
        {{ form_label(form.password, 'password', {'label_attr': {'class': 'col-md-1 control-label'}}) }}
        {{ form_widget(form.password, {'attr': {'class': 'col-md-2'}}) }}
        {{ form_errors(form.password, {'attr': {'class': 'col-md-3'}}) }}
    </div>

    <div class="form-group">
        {{ form_label(form.password_repeat, 'Repeat password', {'label_attr': {'class': 'col-md-1 control-label'}}) }}
        {{ form_widget(form.password_repeat, {'attr':{'class': 'col-md-2'}}) }}
        {{ form_errors(form.password_repeat, {'attr': {'class': 'col-md-3'}}) }}
    </div>
    <div class="form-group">
        <div class="col-md-1 control-label">
        <input type="submit" value="submit">
    </div>

    </div>
</form>

有任何想法吗?


问题答案:

您需要_token在表单中添加,即

{{ form_row(form._token) }}

截至目前,您的表单缺少CSRF令牌字段。如果您使用树枝形状表单函数来呈现表单,form(form)则将自动为您呈现CSRF令牌字段,但是您的代码显示您正在使用原始HTML来呈现表单,例如<form></form>,因此您必须手动呈现该字段。

或者,只需{{ form_rest(form) }}在表单的结束标记之前添加

根据文档

这将呈现给定表单尚未呈现的所有字段。始终将其保留在表单内是一个好主意,因为它将为您呈现隐藏的字段,并使您忘记呈现的所有字段变得更加明显(因为它将为您呈现该字段)。

form_rest(视图,变量)



 类似资料:
  • FOS用户捆绑表单(登录、注册等)工作正常,但不是我自己的表格,给我: CSRF令牌无效。请尝试重新提交表格 当我试图在以下位置创建资源时: 甚至: OS X EL Capitan 64 bit Web服务器: 服务器:Apache 2.4.16 服务器API:Apache 2.0处理程序(mod_php7) 线程安全:禁用 文档根: PHP: app/config/config。yml app/

  • 我对Symfony2中的令牌形式有问题。(2.7.0) 行动: 我的表格: 当我测试表单时,总是显示相同的错误:“CSRF令牌无效。请尝试重新提交表单”。我确信输入隐藏在表单中。这是一种观点: 谁能帮帮我? 我测试禁用csrf保护,像这样: 行动: 形式: 但是出现了一个不同的错误:此表单不应包含额外的字段。因为令牌的隐藏输入,它还在表单中,我不知道要删除它。 谢谢你!

  • 我正在尝试使用Spring MVC 4上载带有web应用程序的文件,但出现错误: 在请求参数“\u CSRF”或标头“X-CSRF-Token”上发现无效的CSRF令牌“null”。 Spring版本: Spring版本4.1.7。发布 Spring安全4.0.1。发布 代码: web.xml spring web servlet。xml Settings.jsp 提交名为test的文件后,发布请

  • 概述 我将使用API网关作为基于Spring Security性的身份验证。我刚刚按照https://spring.io/guides/tutorials/spring-security-and-angular-js/链接中的步骤创建了一个基于其对应的github项目的“对双”模块的项目https://github.com/spring-guides/tut-spring-security-and

  • 我有一个新的Symfony 3.0的奇怪问题。1安装。我用一个包含url和标题的表单PostType生成了一个新的CRUD控制器。没什么特别的。 表单按预期呈现。它包含我的url字段和标题字段。表单内部还呈现隐藏的输入字段_标记。 提交此表单时,我始终收到以下错误: 所以令牌被添加到表单中,它包含一个值,我有一个常量PHP会话cookie值,它只是使这个令牌无效。 我已经搜索了其他答案,但类似的问

  • 我导入了这两个包(csrf、cookieparser),并在appjs中使用了express-js,它只工作,而且我在postman中测试了它的工作情况,这里是我的代码express-js: 还有我使用 react js 的前端,在 useEffect 中,我从后端获取 csrf,然后我保存在 axios 的标头中,但是当我向后端发送请求时,响应说无效的 csrf :/ 来自服务器的响应:Forb