-
26-10-2019 - |
Frage
Ich habe integriert Bequemes CMS-Mexikaner-Sofa-CMS Mit meiner Rails 3.0.9 App mit Omniauth 0.2.6.
Alles funktioniert gut Blog -Seite. Ich kann mich CMS-Admin anmelden, mit der Administratorkonsole arbeiten, einen Beitrag erstellen und abmelden (CMS-Admin hat sein eigenes Authentifizierungssystem, anders durch meine App ...), als ich den neuen Beitrag durchsuchen kann.
Das Problem ist, dass der Rest meiner App Benutzer mit Omniauth authentifiziert, und wenn ich mich anmeldet/auf den folgenden Fehler erhalte:
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):
Meine GemFile.lock ist hier: http://pastie.org/2270005
Jede Hilfe wird sehr geschätzt. Luca G. Soave
Lösung
Es war ein Routing -Problem.
Omniauth arbeitet, indem er eine 404 -Fehlerseite erfasst:
Wenn es mit der Route /Auth /: Anbieter übereinstimmt, sendet die Anfrage sie an den Anbieter
... aber Bequemes CMS-Mexikaner-Sofa-CMS (wie Raffinerie und andere), hat einen Fang Allroute, weshalb die Anfrage nie einen 404 -Fehler zurückgegeben hat, den Omniauth erkennen konnte.
Im Fall bequem-mexikanisch-sofa geht es durch "cms_path"=>"auth/github"
bekommen
NoMethodError in CmsContentController#render_html
undefined method `gsub!' for nil:NilClass
Anstelle des richtigen Omniauth -Pfades, der wie folgt gehen sollte:
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)
Die Lösung in meinem Fall ist wie folgt:
in App/Controller/fehler_controller.rb
class ErrorsController < ApplicationController
def error
render :file => "#{Rails.root}/public/404.html", :status => 404, :layout => false
end
end
in config/Routes.rb unten hinzufügen
match '/auth/:provider' => 'errors#error'
... nach Omniouth Last Route
`match "/auth/:provider/callback" => "sessions#create"`
Danke geht an Federico Gonzalez
und zu Oleg Khabarov
Ich hoffe das wird jemand anderem helfen ;-)
Tschüss Luca G. Soave