Je cherche une solution me permettant de vérifier périodiquement si la session de l'utilisateur a expiré et si c'est le cas, de le rediriger vers la page de connexion.
J'utilise Authlogic gem, donc ce que je fais c'est appeler une fonction qui fait un test sur current_user.
Mon USER_SESSION_TIMEOUT est de 5 minutes, donc je fais cet appel ajax toutes les 5:10 minutes.Ruby on rails - Authlogic: vérifie périodiquement si la session utilisateur est valide
<%= 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
Je remarqué que chaque fois que j'appelle current_user l'objet utilisateur est mis à jour et ainsi la session est renouvelée à 5 minutes.
Il n'y a pas de problème quand un seul onglet est ouvert mais si j'ai 2 onglets chaque fois que j'appelle check_session_timed_out current_user renouveler mettre à jour l'utilisateur et donc la session n'expire jamais.
une idée? Merci
MERCI! c'est parfait – Mathieu