Tanto Session.Clear () quanto Session.Abandon () eliminam as variáveis de sessão. Pelo que entendi, Abandon () encerra a sessão atual e faz com que uma nova sessão seja criada, fazendo com que os eventos End e Start sejam disparados.
Parece preferível chamar Abandon () na maioria dos casos, como desconectar o usuário. Existem cenários onde eu usaria Clear () em vez disso? Existe muita diferença de desempenho?
fonte
Session.Abandon()
como um 'logout' em um aplicativo interno usando a Autenticação do Windows - os usuários não precisaram se autenticar novamente (Chrome, FF), mas a sessão foi descartada e uma nova foi emitida, que atendeu aos meus requisitosSomente usar Session.Clear () quando um usuário efetua logout pode representar uma falha de segurança. Como a sessão ainda é válida no que diz respeito ao Servidor Web. Então, é uma questão razoavelmente trivial farejar e capturar o Id da sessão e sequestrar essa sessão.
Por este motivo, ao desconectar um usuário, seria mais seguro e mais sensato usar Session.Abandon () para que a sessão seja destruída e uma nova sessão criada (mesmo que a página de interface de usuário de logout faça parte da nova sessão, a nova sessão não teria nenhum dos detalhes do usuário nela e sequestrar a nova sessão seria equivalente a ter uma nova sessão, portanto, ficaria sem som).
fonte
Session.Abandon
destrói a sessão conforme declarado acima, portanto, você deve usar isso ao desconectar alguém. Acho que um bom uso deSession.Clear
seria para uma cesta de compras em um site de comércio eletrônico. Dessa forma, a cesta é limpa sem desconectar o usuário.fonte
Session.Abandon
apenas para limpar uma cesta de compras específica?Eu tive esse problema e tentei os dois, mas tive que me contentar em remover porcarias como "pageEditState", mas não remover as informações do usuário para não ter que pesquisar novamente.
fonte