Como esvaziar / destruir uma sessão em trilhos?
-
18-09-2019 - |
Pergunta
Eu não consigo encontrá-lo em qualquer lugar ... Como faço para excluir / destruir / reset / esvaziar / limpar uma sessão do usuário no Rails? Não apenas um valor, mas a coisa toda ..
Solução
Para limpar a coisa toda utilização do método reset_session em um controlador.
reset_session
Aqui está a documentação sobre este método: http://api.rubyonrails.org /classes/ActionController/Base.html#M000668
Redefine a sessão limpando tudo os objetos armazenados dentro e inicializar um novo objeto de sessão.
Boa sorte!
Outras dicas
sessão no Rails é um objeto hash. Por isso, qualquer função disponível para compensação de hash irá trabalhar com sessões.
session.clear
ou se teclas específicas têm de ser destruídos:
session.delete(key)
Testado em trilhos 3.2
adicionado
As pessoas mencionadas por session={}
é uma má idéia. Em relação session.clear
, Lobati Comentários- Parece que você é provavelmente melhor fora de usar reset_session [do que Session.clear], como faz alguma outra limpeza até além do que Session.clear faz. Internamente, reset_session chama session.destroy , que se chama clara, assim como algumas outras coisas.
para excluir uma sessão do usuário
session.delete(:user_id)
Para limpar apenas certos parâmetros, você pode usar:
[:param1, :param2, :param3].each { |k| session.delete(k) }
adicionar este código ao seu ApplicationController
def reset_session
@_request.reset_session
end
(Não sei por que ninguém acima apenas mencionar este código uma vez que fixa o meu problema) http://apidock.com/rails/ActionController/RackDelegation/reset_session