Qual é a diferença entre a Sessão.Abandonar() e Sessão.Clear() em ASP.Net?
-
26-09-2019 - |
Pergunta
Qual é a diferença entre Session.Abandon()
e Session.Clear()
no ASP.Net?
Solução
Session.Abandon()
terminará a sessão atual. Session_End
será demitido e o próximo pedido demitirá o Session_Start
evento.
Session.Clear
Apenas limpará os dados da sessão e a sessão permanecerá viva.
O ID da sessão permanecerá o mesmo nos dois casos, desde que o navegador não esteja fechado.
Em poucas palavras:
Session.Abandon();
cancela a corrente Session
.
Session.Clear();
limpa todos os valores de Session
Estado.
Outras dicas
Session.Abandon()
vai destruir/matar toda a sessão.
Session.Clear()
remove/limpa os dados da sessão (por exemplo,as chaves e os valores da sessão atual), mas a sessão vai ser vivo.
Compare a Sessão.Abandonar() método de Sessão.Clear() não cria uma nova sessão, ele acabou de fazer todas as variáveis da sessão NULA.
ID de sessão permanecerá o mesmo em ambos os casos, desde que o navegador não é fechado.
Algumas coisas a serem observadas aqui da minha experiência:
Session.Abandon()
não invalida a sessão atual. Os pedidos antigos executam bem se você os repetir.
Mas, depois de chamá -lo, definir o conteúdo do dicionário de sessão abandonado não tem efeito permanente. A próxima solicitação recebe um novo dicionário de sessão (mesmo se você usar o mesmo ID da sessão, repetindo uma solicitação anterior) e nenhuma das suas alterações anteriores (depois de ter chamado o método) está lá.
Então, parece que Session.Abandon()
interrompe totalmente a persistência de toda a sessão, enquanto Session.Clear()
apenas remove seus dados.
Além disso, se você precisar proteger seu aplicativo de ataques de repetição, adicione alguma lógica que valida sessões e não dependa de qualquer um desses métodos internos. Eles parecem ser destinados apenas ao gerenciamento da persistência dos dados da sessão, não por proteger seu aplicativo.