Non riesco a trovarlo da nessuna parte ... Come faccio a cancellare/distruggere/resettare/svuotare/cancellare la sessione di un utente in Rails? Non solo un valore ma il tutto ..Come svuotare/distruggere una sessione nei binari?
risposta
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!
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
Qualcuno ha qualche idea sul merito di questo metodo rispetto a quello raccomandato da Gdeglin? –
Può essere utilizzato quando si desidera conservare altri parametri, ma eliminare una particolare coppia di valori chiave. – Lavixu
Suppongo che mi stavo riferendo all'uso di 'session.clear' o' session = {} 'rispetto all'uso di' reset_session'. Sono identici? –
Per cancellare solo alcuni parametri, è possibile utilizzare:
[:param1, :param2, :param3].each { |k| session.delete(k) }
a elimina la sessione di un utente
session.delete(:user_id)
Attenzione, puoi cancellare il record utente dal database! – Arthur
@Arthur Questo non è vero. Ma cancellerai solo la chiave: user_id dalla sessione e non l'intera sessione –
aggiungere questo codice al ApplicationController
def reset_session
@_request.reset_session
end
(non so perché nessuno sopra basta citare questo codice come è risolto il mio problema) http://apidock.com/rails/ActionController/RackDelegation/reset_session
Solo una che ha funzionato per me. – amingilani
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