2010-03-08 13 views

Odpowiedz

178

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

reset_session 

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

resetuje sesja czyszcząc wszystkie przedmiotów przechowywanych wewnątrz i inicjuje nowy obiekt sesji.

Powodzenia!

+1

Dla sesji bazodanowych opartych (które powinny prawdopodobnie używaj) możesz wygasić poprzez zapytanie: http://guides.rubyonrails.org/security.html#session-expiry – m33lky

36

sesja w szynach to obiekt mieszający. Dlatego każda funkcja dostępna do czyszczenia hash będzie działała z sesjami.

session.clear 

lub jeśli konkretne klawisze mają być zniszczone:

session.delete(key) 

Testowany w szynach 3,2

+0

Ktoś myśli o zaletach tej metody w porównaniu z zalecaną przez Gdeglin? –

+2

Można tego użyć, jeśli chcesz zachować inne parametry, ale usunąć jedną określoną parę kluczy. – Lavixu

+0

Przypuszczam, że miałem na myśli użycie 'session.clear' lub' session = {} 'kontra użycie' reset_session'. Czy są identyczne? –

5

aby usunąć tylko niektóre parametry, można użyć:

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

do usuń sesję użytkownika

session.delete(:user_id) 
+0

Ostrożnie, możesz usunąć rekord użytkownika z bazy danych! – Arthur

+0

@Arthur To nie jest prawda. Ale usuniesz tylko klucz: identyfikator_użytkownika z sesji, a nie całą sesję –