2010-03-08 16 views

risposta

178

Per cancellare l'intera cosa utilizzare il metodo reset_session in un controller.

reset_session 

Ecco la documentazione su questo metodo: http://api.rubyonrails.org/classes/ActionController/Base.html#M000668

Ripristina la sessione sgombrare tutti gli oggetti memorizzati all'interno e inizializzare un nuovo oggetto di sessione.

Buona fortuna!

+1

Per le sessioni basate su database (che si dovrebbe probabilmente uso) puoi scadere tramite una query: http://guides.rubyonrails.org/security.html#session-expiry – m33lky

36

session in rails è un oggetto hash. Quindi qualsiasi funzione disponibile per cancellare l'hash funzionerà con le sessioni.

session.clear 

o se le chiavi specifiche devono essere distrutti:

session.delete(key) 

testato in rotaie 3.2

+0

Qualcuno ha qualche idea sul merito di questo metodo rispetto a quello raccomandato da Gdeglin? –

+2

Può essere utilizzato quando si desidera conservare altri parametri, ma eliminare una particolare coppia di valori chiave. – Lavixu

+0

Suppongo che mi stavo riferendo all'uso di 'session.clear' o' session = {} 'rispetto all'uso di' reset_session'. Sono identici? –

5

Per cancellare solo alcuni parametri, è possibile utilizzare:

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

a elimina la sessione di un utente

session.delete(:user_id) 
+0

Attenzione, puoi cancellare il record utente dal database! – Arthur

+0

@Arthur Questo non è vero. Ma cancellerai solo la chiave: user_id dalla sessione e non l'intera sessione –