update tutorial signup sign_in registrationscontroller rails method generate gema ruby-on-rails devise

ruby on rails - tutorial - Redirigir Devise before_filter: authenticate_user para iniciar sesión en la ruta



gema devise (3)

Agregué una página wiki que muestra la forma correcta de hacer esto con una aplicación fallida (como Steven insinuó inicialmente):

La clave es anular el método de route , así:

# app/lib/my_failure_app.rb class MyFailureApp < Devise::FailureApp def route(scope) :new_user_registration_url end end

y luego haz que Devise use tu aplicación de falla:

# config/initializers/devise.rb config.warden do |manager| manager.failure_app = MyFailureApp end

Este enfoque es preferible a anular authenticate_user! en su controlador, ya que no va a contener muchas cosas "detrás de escena" que hace Devise, como almacenar el intento de URL para que el usuario pueda ser redirigido después de iniciar sesión correctamente.

Con múltiples tipos de usuarios.

Si tiene recursos de Admin y diseño de User , probablemente querrá mantener la funcionalidad predeterminada de "nueva sesión" para los administradores. Puede hacerlo fácilmente comprobando qué tipo de ámbito se está procesando:

# app/lib/my_failure_app.rb class MyFailureApp < Devise::FailureApp def route(scope) scope.to_sym == :user ? :new_user_registration_url : super end end

Estoy usando un dispositivo y tengo una pregunta rápida. ¿Cómo puedo redireccionar el: authenticate_user! ¿Antes de filtrar a la página de registro del usuario en lugar de iniciar sesión? He estado revisando https://github.com/plataformatec/devise/blob/master/lib/devise/controllers/helpers.rb pero no he tenido mucha suerte para encontrar una solución.



Tuve un problema similar en el que tenía que redireccionar al registro si el usuario no había iniciado sesión. Lo arreglé agregando un método a application_controller.rb y usándolo como filtro anterior en los otros controladores.

Tenga en cuenta que es una solución más temporal porque omite un montón de abstracciones de dispositivos.

before_filter :auth_user def auth_user redirect_to new_user_registration_url unless user_signed_in? end