【发布时间】:2012-01-25 22:58:02
【问题描述】:
问题似乎在于所有执行 POST、PUT、DELETE 请求的测试。这些请求似乎没有附加 csrf 令牌。因此我被重定向到/login。当然,GET 请求完全没问题。
值得一提的是,实际的浏览器交互很好。所以它在开发环境中有效,但在测试环境中无效。
其他人看到了吗?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-2
问题似乎在于所有执行 POST、PUT、DELETE 请求的测试。这些请求似乎没有附加 csrf 令牌。因此我被重定向到/login。当然,GET 请求完全没问题。
值得一提的是,实际的浏览器交互很好。所以它在开发环境中有效,但在测试环境中无效。
其他人看到了吗?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-2
这可能是由于修复了 csrf 安全漏洞。如果您尚未添加 csrf_meta_tags 并更新您的 jquery-ujs 文件,您可能还需要为升级执行此操作。但是,如果它在开发模式下工作,则可能并非如此。这是关于该主题的更详细的博客文章。 http://jasoncodes.com/posts/rails-csrf-vulnerability
【讨论】:
好的,问题出在protect_from_forgery。对于我不知道的一些原因,before_filter :login_required 触发得太早了。我不知道细节或如何“正确”解决这个问题。但是这样做可以让我最终运行我的测试:
protect_from_forgery unless Rails.env.test?
【讨论】: