Php symfony2 csrf令牌在ajax请求中无效

Php symfony2 csrf令牌在ajax请求中无效,php,ajax,forms,angularjs,symfony,Php,Ajax,Forms,Angularjs,Symfony,嗨,我正在开发一个带有symfony2和AngularJS的应用程序。我有一个表单,我用$http服务通过post发送。例如登录表单和注册表单 我得到的错误是经典的CSRF令牌无效,并且在重新提交表单时发生 第一次表单提交过程顺利,用户登录或注册;但如果我注销并尝试重新提交具有相同数据的表单以再次登录,则会出现无效csrf令牌的错误 如果表单是通过以下方式提交的,则中的将尝试重新生成令牌: $this->get('form.csrf_provider')->generateCsrfToken('

嗨,我正在开发一个带有symfony2和AngularJS的应用程序。我有一个表单,我用$http服务通过post发送。例如登录表单和注册表单

我得到的错误是经典的CSRF令牌无效,并且在重新提交表单时发生

第一次表单提交过程顺利,用户登录或注册;但如果我注销并尝试重新提交具有相同数据的表单以再次登录,则会出现无效csrf令牌的错误

如果表单是通过以下方式提交的,则中的将尝试重新生成令牌:

$this->get('form.csrf_provider')->generateCsrfToken('authenticate')

并在视图中将其替换为下一次表单将有新令牌发送时,但我得到相同的错误


我做错了什么?

我知道你很久以前问过这个问题,但今天我遇到了同样的问题,解决方法非常简单。如果使用其他节点渲染窗体,请确保form_start与form_end位于同一节点中。 在我的例子中,它看起来是这样的:

<div>
{{form_start(form)}}
... some form inputs
</div>
{{form_end(form)}}

{{form_start(form)}}
... 一些表单输入
{{form_end(form)}}
您可能知道,表单_end呈现令牌(在最新的Symfony中),因此,令牌在表单之外

当您尝试重新提交表单时,我想这是因为您有其他模板用于重新提交表单(例如有错误),所以请确保您的HTML层次结构有效


希望它能在将来帮助别人。干杯

是否需要为每个请求重新呈现表单?不,其想法是表单始终存在,或显示或隐藏在用户菜单的登录包装div中,它将根据用户的登录状态隐藏或显示您是否检查CSRF令牌在请求之间是否确实发生了更改?是的,我检查在成功请求后是否发送了新令牌,并在表单上的\u令牌字段上进行了更改,但是由于某种原因,当我再次发送表单时,symfone希望另一个令牌与第一次使用的令牌和请求中生成的新令牌不同