【问题标题】:Persistent CSRF Token Rejection in Rails AppRails 应用程序中的持续 CSRF 令牌拒绝
【发布时间】:2015-04-18 21:46:58
【问题描述】:

我在 Rails 4.2 应用程序中使用 Devise 进行身份验证。大多数用户在登录和完成工作时都没有任何问题,但特别是有一个用户似乎始终持有错误的 CSRF 令牌并且无法登录。

当然,以下是记录的内容:

W, [2015-02-17T20:58:19.261194 #1936]  WARN -- : Can't verify CSRF token authenticity
I, [2015-02-17T20:58:19.263556 #1936]  INFO -- : Completed 422 Unprocessable Entity in 5ms
F, [2015-02-17T20:58:19.276795 #1936] FATAL -- :
ActionController::InvalidAuthenticityToken (ActionController::InvalidAuthenticityToken):
<stack trace>

仔细阅读日志,我发现用户的 CSRF 令牌如您所愿地发生了变化,但它始终(100% 的时间)被服务器拒绝。

最初,我认为这是该用户浏览器的问题。我在尝试登录时开始记录用户代理,并要求该用户尝试使用多个浏览器;她有,而且所有人都能够重现同样的问题。 我重置了她的密码,并能够使用新凭据登录该帐户。她仍然无法登录。

她已多次转储缓存并清除 cookie。同样,反恶意软件的运行也不会返回任何结果(这可能是最可疑的)。

我错过了什么?我需要在服务器端做些什么来解决这个问题,还是她的电脑本身有问题?

【问题讨论】:

    标签: ruby-on-rails devise csrf


    【解决方案1】:

    问题已得到解决,至少是暂时的。在 Devise 问题跟踪器上搜索了一些问题后,我偶然发现了这个似乎有帮助的 sn-p(用于放置在 config/initializers/session_store.rb):

    Rails.application.config.session_store :cookie_store, key: "_rails_session_#{Rails.env}", domain: :all
    

    此时用户在登录时没有任何问题。我怀疑要么是用户没有正确清除她的 cookie,要么是代码中的某处有混淆。无论如何,它似乎是固定的。

    【讨论】:

      猜你喜欢
      • 2021-10-17
      • 2014-08-10
      • 2015-08-25
      • 2012-02-05
      • 2015-09-04
      • 2012-02-26
      • 2017-10-29
      • 2012-05-11
      • 1970-01-01
      相关资源
      最近更新 更多