2013-04-29 2 views
1

В настоящее время у меня есть эти два маршрута в моем выходе рейк маршруты:Использование Omniauth on Rails, как изменить URL-адрес?

user_omniauth_authorize 
/users/auth/:provider(.:format) 
devise/omniauth_callbacks#passthru {:provider=>/facebook|twitter/} 
user_omniauth_callback 
/users/auth/:action/callback(.:format) 
devise/omniauth_callbacks#(?-mix:facebook|twitter) 

Что файл я должен изменить, чтобы настроить их таким образом, маршрут можно прочитать:

user_omniauth_authorize 
/admin/manage/:slug/auth/:provider(.:format) 
devise/omniauth_callbacks#passthru {:provider=>/facebook|twitter/} 
user_omniauth_callback 
/admin/manage/:slug/auth/:action/callback(.:format) 
devise/omniauth_callbacks#(?-mix:facebook|twitter) 

ответ

2

Добавьте следующие ваши маршруты .rb file:

devise_for :users, :skip => :omniauth_callbacks 

devise_scope :user do 
    match "/admin/manage/:slug/auth/:provider", 
     :constraints => { :provider => /facebook|twitter/ }, 
     :to => "devise/omniauth_callbacks#passthru", 
     :as => :user_omniauth_authorize, 
     :via => [:get, :post] 

    match "/admin/manage/:slug/auth/:action/callback", 
     :constraints => { :action => /facebook|twitter/ }, 
     :to => "devise/omniauth_callbacks", 
     :as => :user_omniauth_callback, 
     :via => [:get, :post] 
end 

Теперь это не проверено. Я скопировал его с Devise's source code. Итак, есть несколько проблем:

  1. Вы должны добавить user к :as псевдоним, так что это не динамический.
  2. Вы должны добавить поставщиков auth к ограничениям, поэтому он не является динамическим.
Смежные вопросы