Tanto Session.Clear () como Session.Abandon () eliminan las variables de sesión. Según tengo entendido, Abandon () finaliza la sesión actual y hace que se cree una nueva sesión, lo que provoca que se activen los eventos End e Start.
Parece preferible llamar a Abandon () en la mayoría de los casos, como cerrar la sesión de un usuario. ¿Hay escenarios en los que usaría Clear () en su lugar? ¿Hay mucha diferencia de rendimiento?
fuente
Session.Abandon()
como un 'cierre de sesión' en una aplicación interna usando la autenticación de Windows: los usuarios no tuvieron que volver a autenticarse (Chrome, FF), pero la sesión se eliminó y se emitió una nueva, que cumplió con mis requisitosSolo usar Session.Clear () cuando un usuario cierra sesión puede suponer un agujero de seguridad. Ya que la sesión sigue siendo válida en lo que respecta al servidor web. Entonces, es un asunto razonablemente trivial oler, tomar la identificación de la sesión y secuestrar esa sesión.
Por esta razón, al cerrar la sesión de un usuario, sería más seguro y sensato usar Session.Abandon () para que la sesión se destruya y se cree una nueva sesión (aunque la página de la IU de cierre de sesión formaría parte de la nueva sesión, la nueva sesión no tendría ninguno de los detalles de los usuarios y secuestrar la nueva sesión sería equivalente a tener una nueva sesión, por lo tanto, sería muda).
fuente
Session.Abandon
destruye la sesión como se indicó anteriormente, por lo que debe usar esto cuando cierre la sesión de alguien. Creo que un buen uso deSession.Clear
sería para una cesta de la compra en un sitio web de comercio electrónico. De esa manera, la canasta se borra sin cerrar la sesión del usuario.fuente
Session.Abandon
para borrar una cesta de la compra específica?Tuve este problema y probé ambos, pero tuve que conformarme con eliminar basura como "pageEditState", pero no eliminar la información del usuario para no tener que buscarla nuevamente.
fuente