Jak opróżnić / zniszczyć sesję w rails?

Nie mogę go nigdzie znaleźć... Jak usunąć/zniszczyć/zresetować/opróżnić / wyczyścić sesję użytkownika w Rails? Nie tylko jedna wartość, ale cała rzecz..

Author: user664833, 2010-03-09

5 answers

Aby wyczyścić całość użyj metody reset_session w kontrolerze.

reset_session

Oto dokumentacja tej metody: http://api.rubyonrails.org/classes/ActionController/Base.html#M000668

Resetuje sesję, usuwając wszystkie obiektów przechowywanych wewnątrz i inicjalizacja nowego obiektu sesji.

Powodzenia!
 186
Author: Gdeglin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-09 00:06:58

Sesja w rails jest obiektem hash. Stąd każda funkcja dostępna do czyszczenia hash będzie działać z sesjami.

session.clear

Lub jeśli trzeba zniszczyć konkretne klucze:

session.delete(key)

Testowane w rails 3.2

Dodano

Ludzie wspominali przez session={} to zły pomysł. Jeśli chodzi o session.clear, Lobati komentuje-wygląda na to, że lepiej będzie używać reset_session [niż sesji.clear], podobnie jak inne sprzątanie poza jaką sesją.jasne. Wewnętrznie, reset_session wywołuje sesję.destroy, co samo w sobie nazywa jasne, jak również niektóre inne rzeczy.

 37
Author: Lavixu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-03 18:57:31

Aby usunąć sesję użytkownika

session.delete(:user_id)
 6
Author: vjnan369,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-25 08:43:18

Aby wyczyścić tylko niektóre parametry, możesz użyć:

[:param1, :param2, :param3].each { |k| session.delete(k) }
 5
Author: vladCovaliov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-20 05:21:25

Dodaj ten kod do swojego ApplicationController

def reset_session
  @_request.reset_session
end

( Dont know why no one above just mention this code jak to rozwiązało mój problem ) http://apidock.com/rails/ActionController/RackDelegation/reset_session

 2
Author: David Mesaros,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-22 15:42:26