【问题标题】:Upgraded from Rails 2.3.4 to 2.3.14 and now tests are failing (Shocking, I know)从 Rails 2.3.4 升级到 2.3.14,现在测试失败了(震惊,我知道)
【发布时间】:2012-01-25 22:58:02
【问题描述】:

问题似乎在于所有执行 POST、PUT、DELETE 请求的测试。这些请求似乎没有附加 csrf 令牌。因此我被重定向到/login。当然,GET 请求完全没问题。

值得一提的是,实际的浏览器交互很好。所以它在开发环境中有效,但在测试环境中无效。

其他人看到了吗?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-2


    【解决方案1】:

    这可能是由于修复了 csrf 安全漏洞。如果您尚未添加 csrf_meta_tags 并更新您的 jquery-ujs 文件,您可能还需要为升级执行此操作。但是,如果它在开发模式下工作,则可能并非如此。这是关于该主题的更详细的博客文章。 http://jasoncodes.com/posts/rails-csrf-vulnerability

    【讨论】:

    • 我添加了 csrf_meta_tags 和其他东西。在开发中一切正常。我可以毫无问题地提交表格。然而,测试失败了。因此,似乎某些内部人员并未以某种方式通过令牌发送。这真的应该与视图或 js 中发生的事情无关。
    【解决方案2】:

    好的,问题出在protect_from_forgery。对于我不知道的一些原因,before_filter :login_required 触发得太早了。我不知道细节或如何“正确”解决这个问题。但是这样做可以让我最终运行我的测试:

    protect_from_forgery unless Rails.env.test?
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-28
      相关资源
      最近更新 更多