rails query before ruby ruby-on-rails-3 authentication redirect before-filter

ruby - before - rails query params



¿Cómo aplicar before_filter a cada acción de cada controlador en Rails 3.2.11? (4)

Colóquelo en ApplicationController y herede todos los demás controladores de él. Si no sobrescribe verify_logged_in en uno de sus subcontroladores, simplemente funciona.

Me gustaría verificar si el usuario ha iniciado sesión en cada solicitud al servidor.

Algo como:

:before_filter verify_logged_in

¿Dónde debería colocar ese before_filter para que se aplique a todas las acciones del controlador y todas las solicitudes?


El controlador de aplicaciones es la clase base de todas las demás clases.

Si coloca cualquier filtro en esta clase, el flujo funciona de la siguiente manera:

Si tocas url decir del recurso de los users con cualquier acción decir acción de index , entonces:

El control primero va al Application Controller . Allí comprueba si hay filtros, si encuentra alguno, ejecuta el método de filtro y luego va a la acción de índice del controlador de usuarios.

Controlador de aplicación:

class ApplicationController < ActionController::Base protect_from_forgery before_filter :verify_logged_in end

Otro controlador:

class UsersController < ApplicationController def index end

Aquí, en el código anterior, verá que el otro controlador hereda el contenido del controlador principal que es el controlador de la aplicación. Entonces, si coloca before_filter en el controlador de la aplicación, para cada usuario verificará si el usuario ha iniciado sesión para cada solicitud.


Para asegurarse de que los filtros se apliquen a todas las acciones, colóquelo en el application_controller.rb.


poner before_filter en la clase base (en el archivo application_controller.rb), funcionará en base y todas sus clases derivadas, como

class ApplicationController < ActionController::Base before_filter :set_locale def set_locale I18n.locale = params[:locale] or I18n.default_locale end end

buena suerte :-)