Al hacer login un usuario y almacenar los datos con éxito mediante express-session
hago un redirect a la página principal (res.redirect(url);
). El problema es que al hacer dicho redirect, los datos almacenados en las variables de sesión no se mantienen pero, sorprendentemente, si lo hago manualmente (desde el navegador), los datos de la sesión sí que están disponibles. Por ello deduzco que el problema estará en res.redirect()
, cual es el comportamiento exacto de esta función? Como se podría solucionar este error?
EDIT: Adjunto un ejemplo de la estructura que uso para gestionar las sesiones:
main.js:
var session = require('express-session');var mySQLStore = require('express-mysql-session')(session);let sessionConfiguration = session({ secret: "SuperSecreto", store: sessionStore, //Correctamente configurado saveUninitialized: true, resave: false});function checkSession(req, res, next) { if(req.session.user) { console.log("EXISTE "); console.log(req.session.test); next(); } else { console.log("NO EXISTE "); next(); }}//En el middleware checkSession con el uso de res.redirect siempre//aparece NO EXISTEapp.use('/', sessionConfiguration, checkSession, router);
redirect.js:
router.get('/ruta', function (req, res) { req.session.test = "hola" console.log(req.session.test); //LOS DATOS DE LA SESION SE PIERDEN AL HACER EL REDIRECT res.redirect("/"); });
EDIT:
La cookie que se crea cuando no manda correctamente los datos:
{"cookie":{"originalMaxAge":3600000, "expires":"2019-05-07T21:15:06.727Z", "httpOnly":false, "path":"/", "sameSite":true}}