【发布时间】: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