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

War es hilfreich?

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top