无法通过Foursquare对您进行身份验证,因为“Csrf已检测到”

时间:2014-10-19 20:05:05

标签: ruby-on-rails omniauth csrf foursquare

我在我的Rails应用程序中使用Devise + Omniauth(实际上是omniauth-foursquare,foursquare OAuth2策略)。 登录后,我会继续被重定向到我的应用(/ users / sign_in# = ),并出现以下错误:

无法通过Foursquare对您进行身份验证,因为“已检测到Csrf”

任何见解?

这是我在控制台中最后看到的内容:

  • I,[2014-10-19T19:43:38.947771#2] INFO - omniauth:(foursquare)请求阶段已启动。
  • 开始获取“/ users / auth / foursquare”为142.255.113 ...在2014-10-19 19:43:38 +0000
  • 参数:{“code”=>“2MZGM413 ...”,“州”=>“1ba1cec3beb4 ...”}
  • 由Devise处理:: SessionsController#new as HTML
  • 开始获取“/ users / auth / foursquare / callback?code = 2MZGM413 ...& state = 1ba1cec3beb4 ...”for 142.255.113 ... at 2014-10
  • I,[2014-10-19T19:43:39.378477#2] INFO - omniauth :( foursquare)回调阶段已启动。
  • E,[2014-10-19T19:43:39.378660#2]错误 - omniauth :( foursquare)身份验证失败! csrf_detected:OmniAuth :: Strategies :: OAuth2 :: CallbackError,csrf_detected | CSRF检测到

据我所知,当我收到“cookie overflow”erorr并切换到session_storing时,我的麻烦就开始了:(session_store.rb)

Rails.application.config.session_store :active_record_store, key: '_APPNAME_session', domain: 'DOMAIN.com'

谢谢!

1 个答案:

答案 0 :(得分:0)

如果您检查应用的来源,您将看到生成的HTML包含HEAD元素中的CSRF元标记(即csrf-token和csrf-param)。最有可能的是,您的一个布局/视图正在调用csrf_meta_tags方法。尝试删除它以查看它是否有效,然后考虑为没有它的单独布局创建一个不需要它的表单。其他在前端轨道上有更多经验的人可以在这里使用最佳实践。