Конфигурирование маршрутов в devise при использовании только omniauth для аутентификации - PullRequest
6 голосов
/ 22 декабря 2011

Я создал приложение, которое позволяет пользователю проходить аутентификацию в Active Directory, используя omniauth-ldap.Если это новый пользователь, успешная аутентификация создает пользователя для него на основе информации, возвращаемой из AD.Если пользователь уже существует, он просто входит в систему. Пользователи не регистрируются в приложении, они просто входят в систему с учетными данными AD.И я никогда не хочу, чтобы пользователь входил в систему с учетными данными базы данных.

Я не могу понять, как избавиться от некоторых маршрутов или изменить их.Например, если пользователь посещает / sign_in, он получает аутентификацию базы данных.И если пользователь заходит в sign_up, он попадает на страницу, чтобы зарегистрироваться на сайте.Я хотел бы, чтобы пользователи, которые посещают / sign_in, перешли на страницу входа в систему LDAP, которая называется / users / auth / ldap.Я думаю, что мне нужно создать собственный маршрут, но я не уверен, на какой контроллер мне нужно направить пользователя.И я хочу, чтобы страница sign_up полностью исчезла.

Прямо сейчас у меня есть ссылка, которая позволяет пользователям входить в систему с использованием ldap, и путь для этого - user_omniauth_authorize_path (: ldap).Я просто не уверен, как перевести это в то, что понимает мой файл config / rout.rb.Это то, что я сейчас имею в маршрутах.

   devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" }  do  
      get 'sign_in', :to => 'devise/sessions#new', :as => :new_user_session
      get 'sign_out', :to => 'devise/sessions#destroy', :as => :destroy_user_session
  end 

Когда я запускаю рейковые маршруты, я не вижу ни одного маршрута для user_omniauth_authorize_path, который, как я предполагаю, связан с тем, что этот маршрут генерируется devise.Поэтому я считаю, что мои маршруты должны указывать на контроллер устройства, но я не могу найти правильный путь.

1 Ответ

11 голосов
/ 20 января 2013

Попробуйте добавить

:skip => [:sessions, :registrations] to your routes.rb

Что-то вроде этого:

devise_for :users, :skip => [:sessions, :registrations]

Это может быть полезно , а также, вот еще одинссылка для перехода через .

...