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 ..

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top