【发布时间】:2014-04-23 13:54:41
【问题描述】:
您好,我正在使用 symfony2 和 AngularJS 开发应用程序。我有一个表格,我通过邮寄使用 $http 服务发送。例如登录表单和注册表单。
我得到的错误是经典的 CSRF 令牌无效,并且在重新提交表单时发生。
第一次表单提交过程顺利,用户登录或注册;但如果我注销并尝试重新提交具有相同数据的表单以再次登录,我会收到无效 csrf 令牌的错误。
如果表单提交时尝试重新生成令牌:
$this->get('form.csrf_provider')->generateCsrfToken('authenticate');
并在视图上将其替换为下一次表单将有一个新令牌要发送,但我得到了同样的错误。
我做错了什么?
【问题讨论】:
-
是否需要为每个请求重新渲染表单?
-
不,它的想法是表单始终存在或显示或隐藏在用户菜单的登录包装 div 中,它将根据用户的登录状态隐藏或显示
-
您是否检查过请求之间的 CSRF 令牌是否真的发生了变化?
-
是的,我检查是否在成功请求后发送了一个新令牌,并在表单上的 _token 字段上进行了更改,但是由于某种原因,当我再次发送表单时,symfony 期望另一个令牌不同于第一次使用的时间并且请求中生成的新的
标签: php ajax forms angularjs symfony