Así que estoy ejecutando un backend de node.js con un frontend de reacción y, por alguna razón, con esta configuración:
app.use(session({ store: new MongoStore({ mongooseConnection: mongoose.connection }), secret: process.env.SECRET_KEY, resave: false, saveUninitialized: false, cookie: { maxAge: 1000 * 60 * 60 * 24 * 7 * 2, // two weeks secure: false, httpOnly: false, } }));Guardo el nombre de usuario usando: req.session.username = nombre de usuario; que se guarda, pero luego, cada vez que intento verificar la sesión en otra página, el nombre de usuario desaparece.
Código fuente completo: https://github.com/CTF-Cafe/CTF_Cafe/tree/master/backEnd
PD: funciona en producción completamente bien, pero no localmente. Probé con httponly falso y seguro falso. Ningún cambio.
Cualquier ayuda apreciada
Cuando sirva su interfaz desde su backend, la sesión funcionará porque tiene el mismo origen. Sin embargo, para su entorno local, ejecutará la aplicación React en un puerto diferente, y la aplicación Express también sería diferente. Cuando un puerto es diferente, ya se considera un origen diferente y las cookies, las sesiones no se compartirán.
Puede representar su interfaz a través de la aplicación de nodo y de esta manera puede tener el mismo origen y su sesión permanecerá.
const proxy = require('express-http-proxy'); const app = express(); ... // Add after your routes app.use(proxy('http://127.0.0.1:3000')); // assuming your Reacts runs on P3000Compruebe esta respuesta también.