2011-12-21 13 views
6

Bir kullanıcının omniauth-ldap kullanarak Active Directory'ye karşı kimlik doğrulamasına izin veren bir uygulama geliştirdim. Bu yeni bir kullanıcısa, başarılı kimlik doğrulaması, AD'den döndürülen bilgilere dayanarak onlar için bir kullanıcı oluşturur. Kullanıcı zaten mevcutsa, sadece onları kaydeder. Kullanıcılar uygulama için kaydolmazlar, sadece AD ​​kimlik bilgileriyle giriş yaparlar. Ve kullanıcının veritabanı kimlik bilgileriyle giriş yapmasını istemiyorum.Sadece kimlik doğrulaması için omniauth kullanılıyorsa, rotaları yapılandırmak

Bazı yollardan nasıl kurtulacağımı veya değiştirileceğini anlayamıyorum. Örneğin, bir kullanıcı/sign_in adresini ziyaret ederse, veritabanı doğrulamasını alırlar. Ve eğer kullanıcı sign_up'i ziyaret ederse, siteye kaydolmak için bir sayfaya götürülür./Users/auth/ldap olan LDAP oturumu için/sign_in adresini ziyaret eden kullanıcılar için isterim. Özel bir rota yapmam gerektiğini düşünüyorum, ancak kullanıcıyı hangi denetleyiciye yönlendirmem gerektiğinden emin değilim. Ve ben de sign_up sayfasının tamamen ortadan kaldırılmasını istiyorum.

Şu anda kullanıcıların ldap kullanarak oturum açmalarına izin veren bir bağlantı var ve bunun yolu user_omniauth_authorize_path (: ldap). Bunu config/routes.rb dosyamın anladığı bir şeye nasıl çevireceğimi bilmiyorum. Şu an rotalarda olan bu.

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 

ben o rota vasiyetle tarafından oluşturulan ediliyor çünkü tahmin user_omniauth_authorize_path için herhangi rotayı görmüyorum tırmık yolları çalıştırdığınızda. Bu yüzden rotalarımın bir denetleyiciye işaret etmesi gerektiğini düşünüyorum, ancak doğru yolu bulamıyorum.

+2

Oturum açma formunu göstermediği için devise/sessions/new.html.erb dosyasını değiştirmeniz gerekir. Ve eğer 'database_authenticatable' öğesini kaldırırsanız, uygulamanızda hiç oturum rotası kalmazsınız, bu da bir şekilde sinir bozucu olur. BTW, ben yaptım: 'devise_for: kullanıcılar,: kontrolörler => {: omniauth_callbacks =>" users/omniauth_callbacks "}' benim ** yolları.rb ** dosyasında. ve 'devise: database_authenticatable,: omniauthable,: kurtarılabilir,: rememberable,: izlenebilir,: validatable ** User.rb ** model dosyasında. Ayrıca, buna göre bir ** Users :: OmniauthCallbacksController ** oluşturmanız gerekir. Kodla ilgili yardıma ihtiyacınız olursa haberim olsun? – Surya

cevap