Ruby on rails Rails3与omniauth的路由不匹配
我将omniauth 0.2.6与Rails 3.0.9应用程序集成 一切都很好。我可以登录cms管理员,使用管理员控制台,发表帖子并注销(cms管理员有自己的认证系统,与我的应用程序不同…),而我可以浏览新帖子 问题是,在我的应用程序的其余部分中,使用omniauth对用户进行身份验证,当我注销/登录时,会出现以下错误:Ruby on rails Rails3与omniauth的路由不匹配,ruby-on-rails,ruby,ruby-on-rails-3,omniauth,comfortable-mexican-sofa,Ruby On Rails,Ruby,Ruby On Rails 3,Omniauth,Comfortable Mexican Sofa,我将omniauth 0.2.6与Rails 3.0.9应用程序集成 一切都很好。我可以登录cms管理员,使用管理员控制台,发表帖子并注销(cms管理员有自己的认证系统,与我的应用程序不同…),而我可以浏览新帖子 问题是,在我的应用程序的其余部分中,使用omniauth对用户进行身份验证,当我注销/登录时,会出现以下错误: Started GET "/auth/github" for 127.0.0.1 at 2011-07-25 21:04:46 +0200 Processing by C
Started GET "/auth/github" for 127.0.0.1 at 2011-07-25 21:04:46 +0200
Processing by CmsContentController#render_html as HTML
Parameters: {"cms_path"=>"auth/github"}
SQL (0.3ms) SELECT COUNT(*) FROM "cms_sites"
Cms::Site Load (0.3ms) SELECT "cms_sites".* FROM "cms_sites" LIMIT 1
Completed 500 Internal Server Error in 156ms
NoMethodError (undefined method `gsub!' for nil:NilClass):
我的Gemfile.lock在这里:
任何帮助都将不胜感激。
这是一个路由问题 Omniauth通过检测404错误页面来工作: 如果它与route/auth/:provider匹配,那么它将捕获请求并将其发送给提供者 。。。但是(像和其他人一样)有一个全面的路由,这就是为什么请求从未返回404错误的原因,omniauth可以检测到这个错误 在舒适的墨西哥沙发中,它通过
“cms\u path”=>“auth/github”
获取
NoMethodError in CmsContentController#render_html
undefined method `gsub!' for nil:NilClass
而不是正确的omniauth路径,该路径应如下所示:
Started GET "/" for 127.0.0.1 at 2011-07-25 22:27:26 +0200
Processing by HomeController#index as HTML
Rendered home/index.html.haml within layouts/application (29.5ms)
Completed 200 OK in 44ms (Views: 42.8ms | ActiveRecord: 0.0ms)
Started GET "/auth/github" for 127.0.0.1 at 2011-07-25 22:27:35 +0200
MONGODB gitwatch_dev['users'].find({:provider=>"github", :uid=>1573})
Started GET "/auth/github/callback?code=4334bab983hd5fec19dd" for 127.0.0.1 at 2011-07-25 22:27:36 +0200
Processing by SessionsController#create as HTML
Parameters: {"code"=>"4334bab983hd5fec19dd", "provider"=>"github"}
Redirected to http://localhost:3001/
Completed 302 Found in 255ms
MONGODB gitwatch_dev['users'].find({:_id=>BSON::ObjectId('4e23114b1d41c80f180005b2')})
Started GET "/" for 127.0.0.1 at 2011-07-25 22:27:39 +0200
Processing by HomeController#index as HTML
Rendered home/index.html.haml within layouts/application (415.6ms)
Completed 200 OK in 890ms (Views: 428.6ms | ActiveRecord: 0.0ms)
在我的案例中,解决方案如下所示:
应用程序内/controllers/errors\u controller.rb
class ErrorsController < ApplicationController
def error
render :file => "#{Rails.root}/public/404.html", :status => 404, :layout => false
end
end
谢谢你
我希望这会帮助其他人;-)
再见,卢卡·G·索夫
`match "/auth/:provider/callback" => "sessions#create"`