Rails3 CMS Комфорта-мексиканский сосуд
-
26-10-2019 - |
Вопрос
Я интегрировал Комфорта-мексиканский сосуд CMS с моими рельсами 3.0.9 приложение с Omniauth 0.2.6 на месте.
Все работает отличная сторона блога. Я могу войти в систему CMS-ADMIN, работая с консоли администратора, сделать сообщение и выйти из системы (у CMS-ADMIN есть собственная система аутентификации, отличная от моего приложения ...), чем я могу просматривать новый пост.
Проблема в том, что остальная часть моего приложения аутентифицирует пользователей с Omniauth, и когда я выхожу в систему/включу следующую ошибку:
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):
My Gemfile.lock здесь: http://pastie.org/2270005
Любая помощь будет оценена. Лука Г. Соав
Решение
Это была проблема маршрутизации.
Omniauth работает, обнаружив страницу ошибки 404:
Если он соответствует route /auth /: поставщику, то он поймает запрос отправляет его поставщику
... но Комфорта-мексиканский сосуд CMS (как Очистительный завод и другие), есть все маршрут, поэтому запрос никогда не возвращал ошибку 404, которую Omniauth мог обнаружить.
В случае с удобным имиканом "cms_path"=>"auth/github"
получающий
NoMethodError in CmsContentController#render_html
undefined method `gsub!' for nil:NilClass
Вместо правильного путем омниат, который должен идти следующим образом:
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_controller.rb
class ErrorsController < ApplicationController
def error
render :file => "#{Rails.root}/public/404.html", :status => 404, :layout => false
end
end
в config/routes.rb добавить внизу
match '/auth/:provider' => 'errors#error'
... после последнего маршрута Omniouth
`match "/auth/:provider/callback" => "sessions#create"`
Спасибо Federico Gonzalez
и к Олег Хабаров
Я надеюсь, что это поможет кому-то еще ;-)
Пока, Лука Г. Солав