node.js - usado - Cuando use saveUninitialized y vuelva a guardar en sesión rápida
max fisico que gano premio nobel (2)
Soy novato en la pila MEAN. Leí el github doc de sesión rápida pero hay una opción que no puedo borrar. saveUninitialized
opciones son saveUninitialized
y saveUninitialized
.
¿Alguien puede explicar con un ejemplo cuáles son las ventajas de usar saveUninitialized
y saveUninitialized
y qué afectará si cambiamos el valor booleano en esas opciones?
Sintaxis:-
app.use(session({
resave: false,
saveUninitialized: true,
}))
Supongamos que las sesiones están habilitadas globalmente (para todas las solicitudes).
Cuando un cliente realiza una solicitud HTTP y esa solicitud no contiene una cookie de sesión, se creará una nueva sesión por express-session
. Crear una nueva sesión hace algunas cosas:
- generar una ID de sesión única
- almacenar esa identificación de sesión en una cookie de sesión (para que las solicitudes posteriores realizadas por el cliente puedan ser identificadas)
- crear un objeto de sesión vacío, como
req.session
- Dependiendo del valor de
saveUninitialized
, al final de la solicitud, el objeto de la sesión se almacenará en el almacén de la sesión (que generalmente es un tipo de base de datos)
Si durante la vigencia de la solicitud, el objeto de la sesión no se modifica, al final de la solicitud y cuando saveUninitialized
sea falso , el objeto de la sesión (aún vacío, porque no se ha modificado) no se almacenará en el almacén de la sesión.
El razonamiento detrás de esto es que esto evitará que muchos objetos de sesión vacíos se almacenen en el almacén de sesiones. Como no hay nada útil para almacenar, la sesión se "olvida" al final de la solicitud.
¿Cuándo quieres habilitar esto? Cuando quieres poder identificar visitantes recurrentes, por ejemplo. Podrías reconocer a un visitante de este tipo porque envían la cookie de sesión que contiene la identificación única.
Acerca de resave
: esto puede tener que estar habilitado para los almacenes de sesión que no admiten el comando "táctil". Lo que esto hace es decirle al almacén de la sesión que una sesión en particular aún está activa, lo cual es necesario porque algunas tiendas eliminarán las sesiones inactivas (no utilizadas) después de algún tiempo.
Si un controlador de tienda de sesión no implementa el comando táctil, entonces debe habilitar la función de volver a resave
para que incluso cuando una sesión no haya cambiado durante una solicitud, aún se actualice en la tienda (lo que lo marca como activo).
Por lo tanto, depende completamente de la tienda de sesión que esté utilizando si necesita habilitar esta opción o no.
Una cosa a tener en cuenta es que si configura saveUninitialized
en falso , la cookie de sesión no se configurará en el navegador a menos que se modifique la sesión. Ese comportamiento puede estar implícito, pero no estaba claro para mí cuando estaba leyendo la documentation por primera documentation .