2011-12-21 13 views
6

Zbudowałem aplikację, która pozwala użytkownikowi uwierzytelnić się w Active Directory przy użyciu omniauth-ldap. Jeśli jest to nowy użytkownik, pomyślne uwierzytelnienie tworzy dla nich użytkownika na podstawie informacji zwróconych przez AD. Jeśli użytkownik już istnieje, po prostu loguje się. Użytkownicy nie rejestrują się w aplikacji, po prostu logują się przy użyciu poświadczeń AD. I nigdy nie chcę, aby użytkownik logował się przy użyciu poświadczeń bazy danych.Konfigurowanie tras podczas pracy przy użyciu tylko omniauth do uwierzytelniania

Nie mogę wymyślić, jak się pozbyć lub zmienić niektóre z tras. Na przykład, jeśli użytkownik odwiedza/sign_in, uzyskuje uwierzytelnienie bazy danych. A jeśli użytkownik odwiedza sign_up, zostaje przeniesiony na stronę, aby zarejestrować się na stronie. Chciałbym, aby użytkownicy odwiedzający/sign_in zostali przeniesieni do loginu LDAP, który jest/users/auth/ldap. Myślę, że muszę wykonać niestandardową trasę, ale nie jestem pewien, do którego kontrolera muszę skierować użytkownika. I chcę, aby strona sign_up zniknęła całkowicie.

W tej chwili mam łącze, które pozwala użytkownikom zalogować się przy użyciu ldap, a ścieżka do tego jest user_omniauth_authorize_path (: ldap). Po prostu nie jestem pewien, jak przetłumaczyć to na coś, co mój plik config/routes.rb rozumie. To jest to, co mam teraz na trasach.

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 

Kiedy uruchomić trasy natarcia nie widzę żadnej trasy dla user_omniauth_authorize_path który przypuszczam dlatego, że trasa jest generowany przez devise. Więc myślę, że muszę mieć swoje trasy do kontrolera, ale nie mogę znaleźć właściwej ścieżki.

+2

Musisz zmienić program devise/sessions/new.html.erb, aby nie wyświetlać formularza logowania. A jeśli usuniesz 'database_authenticatable', skończy ci się brak trasy sesji w twojej aplikacji, co jest w pewien sposób frustrujące. BTW, właśnie zrobiłem: 'devise_for: users,: controllers => {: omniauth_callbacks =>" users/omniauth_callbacks "}' w moim pliku ** routes.rb **. i 'devise: database_authenticatable,: omniauthable,: recoverable,: rememberable,: traceable,: validatable' in ** User.rb ** plik modelu. Ponadto, musisz odpowiednio utworzyć ** Users :: OmniauthCallbacksController **. Daj mi znać, jeśli potrzebujesz pomocy z kodem? – Surya

Odpowiedz

Powiązane problemy