2011-12-21 11 views
6

He creado una aplicación que permite a un usuario autenticarse contra Active Directory utilizando omniauth-ldap. Si este es un nuevo usuario, la autenticación exitosa crea un usuario para ellos en función de la información devuelta por AD. Si el usuario ya existe, simplemente inicia sesión. Los usuarios no se registran para la aplicación, simplemente inician sesión con credenciales de AD. Y nunca quiero que el usuario inicie sesión con las credenciales de la base de datos.Configuración de rutas cuando solo uso omniauth para autenticación

No puedo averiguar cómo deshacerme o cambiar algunas rutas. Por ejemplo, si un usuario visita/inicia sesión, recibe la autenticación de la base de datos. Y si el usuario visita sign_up, son llevados a una página para registrarse en el sitio. Me gustaría que los usuarios que visitan/sign_in sean llevados al inicio de sesión de LDAP que es/users/auth/ldap. Creo que necesito hacer una ruta personalizada, pero no estoy seguro a qué controlador necesito dirigir al usuario. Y quiero hacer que la página de inicio de sesión desaparezca por completo.

Ahora tengo un enlace que permite a los usuarios iniciar sesión usando ldap, y la ruta de acceso es user_omniauth_authorize_path (: ldap). Simplemente no estoy seguro de cómo traducir eso en algo que mi archivo config/routes.rb comprenda. Esto es lo que tengo en las rutas en este 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 

cuando corro rutas rastrillo que aún no hay ruta para user_omniauth_authorize_path que supongo que se debe a que la ruta está siendo generado por inventar. Así que creo que necesito que mis rutas apunten a un controlador de diseño, pero parece que no puedo encontrar el camino correcto.

+2

Necesita modificar el dispositivo/sessions/new.html.erb para no mostrar el formulario de inicio de sesión. Y si elimina 'database_authenticatable' terminará sin tener una ruta de sesión en su aplicación, lo que es frustrante de alguna manera. Por cierto, acabo de hacer: 'devise_for: users,: controllers => {: omniauth_callbacks =>" users/omniauth_callbacks "}' en mi archivo ** routes.rb **. y 'idear: database_authenticatable,: omniauthable,: recuperable,: rememberable,: trackable,: validatable' en ** User.rb ** modelo de archivo. Además, debe crear un ** Users :: OmniauthCallbacksController ** en consecuencia. Avíseme si necesita ayuda con el código. – Surya

Respuesta

Cuestiones relacionadas