2011-12-21 8 views
6

Ho creato un'applicazione che consente a un utente di autenticarsi con Active Directory utilizzando omniauth-ldap. Se si tratta di un nuovo utente, l'autenticazione corretta crea un utente per loro in base alle informazioni restituite da AD. Se l'utente esiste già, semplicemente li registra. Gli utenti non si registrano per l'applicazione, si collegano solo con le credenziali di AD. E non voglio mai che l'utente acceda con le credenziali del database.Configurazione degli itinerari in elaborazione quando si utilizza omniauth per l'autenticazione

Non riesco a capire come liberarmi o modificare alcuni percorsi. Ad esempio se un utente visita/sign_in ottiene l'autenticazione del database. E se l'utente visita sign_up, viene indirizzato a una pagina per registrarsi al sito. Vorrei che gli utenti che visitano/sign_in siano portati al login LDAP che è/users/auth/ldap. Penso di dover creare un percorso personalizzato, ma non sono sicuro di quale controller devo indirizzare l'utente. E voglio che la pagina sign_up vada via completamente.

In questo momento ho un collegamento che consente agli utenti di accedere utilizzando ldap e il percorso per questo è user_omniauth_authorize_path (: ldap). Non sono sicuro di come tradurlo in qualcosa che il mio file config/routes.rb capisca. Questo è quello che ho nelle rotte in questo momento.

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 

Quando corro rake routes non vedo alcuna rotta per user_omniauth_authorize_path che presumo sia perché tale percorso viene generato da concepire. Quindi penso di aver bisogno che i miei percorsi puntino a un controller di sviluppo, ma non riesco a trovare la strada giusta.

+2

È necessario modificare il dispositivo/sessioni/new.html.erb per non visualizzare il modulo di accesso. E se rimuovi 'database_authenticatable' finirai per non avere alcuna sessione nella tua app, il che è frustrante in un certo senso. A proposito, ho appena fatto: 'devise_for: users,: controller => {: omniauth_callbacks =>" users/omniauth_callbacks "}' nel mio file ** routes.rb **. e 'escogitare: database_authenticatable,: omniauthable,: recuperabile,: memorizzabile,: rintracciabile,: validatable' in ** file di modello User.rb **. Inoltre, è necessario creare un ** Utenti :: OmniauthCallbacksController ** di conseguenza. Fammi sapere se hai bisogno di aiuto con il codice? – Surya

risposta