web-dev-qa-db-fra.com

Comment vider / détruire une session en rails?

Je n'arrive pas à le trouver nulle part ... Comment supprimer/détruire/réinitialiser/vider/effacer la session d'un utilisateur dans Rails? Pas juste une valeur mais le tout ...

124
tybro0103

Pour tout effacer, utilisez la méthode reset_session dans un contrôleur.

reset_session

Voici la documentation sur cette méthode: http://api.rubyonrails.org/classes/ActionController/Base.html#M000668

Réinitialise la session en effaçant tous les objets stockés dans et en initialisant un nouvel objet de session.

Bonne chance!

190
Gdeglin

session in Rails est un objet de hachage. Par conséquent, toute fonction disponible pour effacer le hachage fonctionnera avec les sessions.

session.clear

ou si des clés spécifiques doivent être détruites:

session.delete(key)

Testé dans Rails 3.2

ajouté

Les gens ont mentionné par session={} est une mauvaise idée. En ce qui concerne session.clear _, Commente Lobati - Il semble que vous fassiez mieux d'utiliser reset_session [que session.clear], car il effectue un autre nettoyage au-delà de ce que session.clear fait. En interne, reset_session appelle session.destroy , lui-même appelle clear ainsi que d'autres éléments.

39
Lavixu

supprimer la session d'un utilisateur

session.delete(:user_id)
6
vjnan369

Pour effacer seulement certains paramètres, vous pouvez utiliser:

[:param1, :param2, :param3].each { |k| session.delete(k) }
5
vladCovaliov

ajouter ce code à votre ApplicationController

def reset_session
  @_request.reset_session
end

(Je ne sais pas pourquoi personne ci-dessus ne mentionne simplement ce code car il a résolu mon problème) http://apidock.com/Rails/ActionController/RackDelegation/reset_session

2
David Mesaros