【问题标题】:How to Use OmniAuth Properly with Rails 2如何在 Rails 2 中正确使用 OmniAuth
【发布时间】:2011-10-04 22:23:06
【问题描述】:

我正在尝试对我的应用程序使用 OmniAuth (0.2.6) 策略。架构为 Rails 2.3.10,Rack 版本为 1.1(OmniAuth 需要此版本或更高版本)。发生的一个问题是 Rails 无法识别我对“/auth/provider”的重定向。实际的错误消息是“没有路由匹配“/auth/casport”。即使抛出该错误,代码似乎也执行到该点之后,直到出现此错误:“request.env['omniauth.auth']”,其中我很确定这意味着它无法识别 env 哈希的“omniauth.auth”键。我感觉 OmniAuth 没有正确加载。我用 Mongrel 和 Webrick 测试了相同的策略和代码库,我收到相同的错误消息。

这是我的 OmniAuth 初始化程序 (config/initializers/omniauth.rb):

ActionController::Dispatcher.middleware.use OmniAuth::Builder do
  provider :casport, :setup => true
end

我在 auth/casport/setup 和 auth/casport/callback 的地方肯定有路线。

我也试过这种方法:How do you implement OmniAuth on Rails 2.2?

config.middleware.use OmniAuth::Builder do
  provider :casport, :setup => true
end

将中间件代码放在 config/environments/development.rb 文件中。

有人对我可能做错了什么有任何想法吗?谢谢!

编辑:我也试过这种方法Has anyone used omniauth with rails 2.3.8?

ActionController::Dispatcher.middleware.use OmniAuth::Strategies::Casport = {
  :setup => true
}

返回读取错误:“NoMethodError: undefined method 'new' for #Hash...

编辑 2:我已升级到 Rails 2.3.10,因为 OmniAuth 与 Rails 2.3.4 不兼容。

【问题讨论】:

    标签: ruby-on-rails mongrel omniauth middleware


    【解决方案1】:

    我在 OmniAuth 的 Github 页面 https://github.com/intridea/omniauth/issues/397 上创建了一个问题,其中包含上述详细信息,这是 OmniAuth 的创建者 Michael Bleigh 的回复:

    “OmniAuth 从来没有正式支持过 Rails 2.3.x ——我听说有些人很幸运,但这不是保证。对不起!”

    所以看起来我上面发布的方法可能适用于某些人。为保证正确运行,需要 Rails 3。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-26
      • 2017-08-20
      • 2018-06-20
      • 1970-01-01
      • 2011-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多