Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在Rails 2中正确使用OmniAuth_Ruby On Rails_Mongrel_Omniauth_Middleware - Fatal编程技术网

Ruby on rails 如何在Rails 2中正确使用OmniAuth

Ruby on rails 如何在Rails 2中正确使用OmniAuth,ruby-on-rails,mongrel,omniauth,middleware,Ruby On Rails,Mongrel,Omniauth,Middleware,我正在尝试对我的应用程序使用OmniAuth(0.2.6)策略。体系结构为Rails 2.3.10,机架版本为1.1(OmniAuth需要此版本或更高版本)。出现的一个问题是Rails无法识别我重定向到“/auth/provider”。实际的错误消息是“No route matches”/auth/casport”。尽管抛出了该错误,但代码似乎执行到了该错误之前的那个点:“request.env['omniauth.auth']”,我很确定这意味着它无法识别“omniauth.auth']”“环

我正在尝试对我的应用程序使用OmniAuth(0.2.6)策略。体系结构为Rails 2.3.10,机架版本为1.1(OmniAuth需要此版本或更高版本)。出现的一个问题是Rails无法识别我重定向到“/auth/provider”。实际的错误消息是“No route matches”/auth/casport”。尽管抛出了该错误,但代码似乎执行到了该错误之前的那个点:“request.env['omniauth.auth']”,我很确定这意味着它无法识别“omniauth.auth']”“环境哈希的键。我感觉OmniAuth没有正确加载。我用Mongrel和Webrick测试了相同的策略和代码库,得到了相同的错误消息

这是我的OmniAuth初始值设定项(config/initializers/OmniAuth.rb):

我肯定有用于auth/casport/setup和auth/casport/callback的路由

我也尝试过这种方法:

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

有人对我可能做得不正确有什么想法吗?谢谢

编辑:我也尝试过这种方法

这将返回一个读取错误:“NoMethodError:undefined method'new'for#Hash…”


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

我在OmniAuth的Github页面上创建了一个问题,上面有上述详细信息,这是OmniAuth的创建者Michael Bleigh的回复:

“OmniAuth从未正式支持Rails 2.3.x——我听说有些人在这方面很幸运,但这并不能保证。很抱歉"

因此,我上面发布的方法似乎对某些人有效。为了保证正确的操作,需要Rails 3

ActionController::Dispatcher.middleware.use OmniAuth::Builder do
  provider :casport, :setup => true
end
config.middleware.use OmniAuth::Builder do
  provider :casport, :setup => true
end
ActionController::Dispatcher.middleware.use OmniAuth::Strategies::Casport = {
  :setup => true
}