Server-side vs Client-side sessions
Clase 8 de 39 • Curso de Autenticación con Passport.js 2019
Sesiones del lado del servidor vs sesiones del lado del cliente
¿Qué es una sesión?
En terminos generales una sesion es una manera de preservar un estado deseado.
¿Qué es una sesion del lado del servidor?
La sesión en el lado del servidor suele ser una pieza de información que se guarda en memoria o en una base de datos y esta permite hacerle seguimiento a la información de autenticación, con el fin de identificar al usuario y determinar cuál es el estado de autenticación. Mantener la sesión de esta manera en el lado del servidor es lo que se considera "stateful", es decir que maneja un estado.
¿Qué es una sesión del lado del cliente?
Las SPA (Single-page apps) requieren una manera de saber si el usuario esta autenticado o no. Pero esto no se puede hacer de una manera tradicional porque suelen ser muy desacopladas con el backend y no suelen refrescar la página como lo hacen las aplicaciones renderizadas en el servidor.
JWT (JSON Web Token) es un mecanismo de autenticación sin estado, lo que conocemos como "stateless". Lo que significa que no hay una sesión que exista del lado del servidor.
La manera como se comporta la sesión del lado del cliente es:
- Cuando el usuario hace "login" agregamos una bandera para indicar que lo esta.
- En cualquier punto de la aplicación verificamos la expiración del token.
- Si el token expira, cambiamos la bandera para indicar que el usuario no está logueado.
- Se suele chequear cuando la ruta cambia.
- Si el token expiró lo redireccionamos a la ruta de "login" y actualizamos el estado como "logout".
- Se actualiza la UI para mostrar que el usuario ha cerrado la sesión.