【发布时间】:2012-07-13 02:07:57
【问题描述】:
如果用户在使用我的 Symfony2 应用程序时在后台退出(由于会话到期或其他原因),我已经实现了一个 JS 层出现在屏幕上,允许用户立即重新登录并继续使用网站。
问题是,如果用户在填写表格的过程中退出了,在使用 JS 层重新登录后,他仍然在查看具有他已经设法输入的值的相同表格,但是他的会话变化。因此表单中的 CSRF 令牌无效。
有没有办法根据当前会话和特定表单生成新的 CSRF 令牌,通过 AJAX 抓取它并在表单中替换?或者也许有其他解决方案?
我不想禁用 CSRF 保护。
【问题讨论】:
-
我没有足够的声誉来评论解决方案,所以我会这样做。 thecatontheflat 的答案可能会奏效,但在我看来,这会打破 CSRF 保护的整个概念:机器人可以简单地调用 AJAX 控制器,获取令牌并使用它与表单一起发布。
标签: symfony