【发布时间】:2015-06-09 16:11:07
【问题描述】:
我的 Rails 4.2 应用程序在 Heroku 上运行最新版本的 Devise 时遇到问题。我将首先声明我已经有一段时间没有将任何代码更改推送到生产环境,而且这个问题最近才开始。
当我登录时,我收到一条错误消息,提示“您想要的更改被拒绝”。当我查看日志时,我可以看到这是 CSRF 令牌的问题。
2015-04-04T19:52:22.430533+00:00 app[web.1]: Started POST "/users/sign_in" for 76.119.72.58 at 2015-04-04 19:52:22 +0000
2015-04-04T19:52:22.435480+00:00 app[web.1]: Completed 422 Unprocessable Entity in 1ms
2015-04-04T19:52:22.434143+00:00 app[web.1]: Processing by Devise::SessionsController#create as HTML
2015-04-04T19:52:22.434211+00:00 app[web.1]: Parameters: {"utf8"=>"✓", "authenticity_token"=>"94uXDeV2wbb1XMfUL445zrIrbhS92pwe+9tWxkyvwtJhnZtZS3ydYOeP2grZvT/t2YMa2A2k/pA+U5X3gFXlAw==", "user"=>{"email"=>"test@example.com", "password"=>"[FILTERED]", "remember_me"=>"0"}, "commit"=>"Log in"}
2015-04-04T19:52:22.435112+00:00 app[web.1]: Can't verify CSRF token authenticity
2015-04-04T19:52:22.438522+00:00 app[web.1]:
我一直在寻找 StackOverflow 的答案,并尝试了我能想到的一切。到目前为止,我已经尝试了一些不同的方法:
我将此行添加到我的
session_store.rb中,认为这可能是 cookie 在开发环境和生产环境之间混合的问题。 Rails.application.config.session_store :cookie_store, key: "_abhnation_session_#{Rails.env}"我没有
rails-apigem,some 讨论建议可能是罪魁祸首。
我还注意到问题完全出在 Firefox 上,而不是特定于环境的。它发生在开发、测试和生产中。我只能通过存根会话在测试中绕过它。
我不知道是什么导致了这种情况发生。几个月来,我没有对面向公众的生产环境进行任何更改。
这里是代码链接:http://github.com/danielbonnell/abhnation-rails 这是现场直播:http://abhnation.herokuapp.com/
【问题讨论】:
标签: ruby-on-rails heroku devise csrf