/ / Express.js y la duración de la sesión connect-mongo - node.js, mongodb, session, cookies, express

Duración de las sesiones Express.js y connect-mongo - node.js, mongodb, sesión, cookies, express

Yo uso express.sesión con connect-mongo para almacenar sesiones de usuario. Establezco cookie maxAge en 2 semanas a partir de ahora, pero lo que quiero es que si el usuario está activo dentro de esas 2 semanas, la sesión se extiende a otras 2 semanas, de modo que cuando está inactivo durante 2 semanas su sesión se elimina (tanto el cookie y la sesión en mongo). Pero el problema es que la sesión se actualiza en MongoDB cuando visita una página, pero la cookie caducará en 2 semanas y no "cambiará". Este es mi código:

app.use(express.session({
secret: "superSecretKey",
cookie: {maxAge: 3600000*24*14},
store: new MongoStore({
mongoose_connection: mongoose.connections[0],
db: "myDb"
})
}));

¿Cómo puedo lograr lo que quiero? ¡Gracias!

Respuestas

2 para la respuesta № 1

Finalmente lo resolví, tienes que usar un middleware para actualizar cualquier dato en la sesión para que la cookie se reenvíe, así:

app.use(function(req, res, next) {
req.session._garbage = Date();
req.session.touch();
next();
});

De esta forma, maxAge se actualizará tanto en la cookie como en la sesión en cada solicitud a la aplicación.