0

我的应用程序刚刚升级到 Rails 4,我们开始看到随机的 InvalidAuthenticityToken 错误。我做了一堆调查,但还没有找到解决方案。任何人都知道发生了什么以及如何解决它?

指出出现在其他类似 SO 问题中但不适用于我的事情:

我们protect_from_forgery with: :exception在 ApplicationController 中调用,但我们也在 Rails 3 中这样做并且没有出现此错误。

我已确认这些是以标准方式使用网站的普通用户;这些不是 CSRF 尝试。

这些不是 API 调用,它们是标准的 Web 表单提交。

真实性令牌存在于表单(通过 Railsform_forform_tag生成)和提交的请求中。

我的会话不应该设置过期时间,因为我没有设置过期时间,而且 Rails 默认是永久的,而且我的用户不经常登录或退出(所以过期的令牌不太可能,就像“打开一个选项卡,登录到单独的选项卡,返回打开标签并尝试操作”)。

生成与我的csrf_meta_tag表单相同的令牌并删除它没有帮助。

我的用户确认他们至少在 Firefox、Chrome 和 Safari 上体验过这种情况。

所有代码都可以在 Github 上找到。

可能相关:如果我secret_key_base在 secrets.yml 中更改我的开发并更改我的session_store.rb文件以使用: Rails.application.config.session_store :cookie_store, key: '_glowfic_constellation_' + Rails.env, domain: 'glowfic.com', tld_length: 2并重新启动服务器,我将注销并且可以在尝试登录时 100% 可靠地遇到此错误。

编辑调出更多的东西:

我无法强制清除所有会话,因为我使用 cookie 存储,但是我已经在生产中重置了 secret_key_base 和 cookie 名称,这(很难说,但我认为)有帮助吗?但没有解决问题。

“可能相关”似乎无关,并且与不支持“localhost”的域“glowfic.com”相关;如果我改用域 localhost,我无法在本地复制。

4

0 回答 0