Estoy buscando una solución que me permita verificar periódicamente si la sesión del usuario ha expirado y, si es así, redirigirlo a la página de inicio de sesión.
Estoy usando Authlogic gem, entonces lo que estoy haciendo es llamar a una función que haga una prueba en current_user.
Mi USER_SESSION_TIMEOUT es de 5 minutos, así que hago esta llamada ajax cada 5:10 minutos.Ruby on Rails - Authlogic: compruebe periódicamente si la sesión del usuario es válida
<%= periodically_call_remote :url => {:controller => 'user_session', :action => 'check_session_timed_out'}, :frequency => (USER_SESSION_TIMEOUT + 10.seconds) %>
def check_session_timed_out
if !current_user
flash[:login_notice] = "Your session timed out due to a period of inactivity. Please sign in again."
render :update do |page|
page.redirect_to "/user_sessions/new"
end
else
render :nothing => true
end
end
me di cuenta de que cada vez que llamo current_user el objeto de usuario se actualiza por lo que la sesión se renueva a 5 minutos.
No hay problema cuando solo se abre una pestaña, pero si tengo 2 pestañas cada vez que llamo check_session_timed_out current_user renew, actualice al usuario y la sesión nunca caduque.
alguna idea? Gracias
MERCI! Eso es perfecto – Mathieu