Tengo una interfaz vue en localhost:8080 y un servidor en localhost:1234 No estoy usando https. Cada vez que la aplicación vue cambia de página o se recarga, la sesión se reinicia. He seguido varias soluciones en la web, como estas: la sesión Express restablece la sesión en cada solicitud y la sesión sigue restableciéndose en Node.js Express
Sin embargo fue en vano.
Esta es mi configuración de sesión:
// app.set('trust proxy', 1 ); app.use(session({ secret: sessionServerToken, resave: true, saveUninitialized: true, cookie: { // Session expires after 1 hour of inactivity. expires: 60 * 1000 * 60, // sameSite: 'none', secure: false } }));y este es mi código de autenticación:
router.post('/auth', (req, res) => { console.log(req.body); const session = req.session; AuthManager.authenticate(req.body.user, req.body.pass).then(response => { session.loggedIn = true; session.userID = response.user.id; res.status(200).send(response); res.end(); }).catch(response => { res.status(response.statusCode).send({ message: response.message }); }); });Las cookies no se compartirán entre diferentes orígenes. Los datos de la sesión no se comparten con la aplicación frontend, por eso actúa como si la sesión se estuviera reiniciando.
Si crea su aplicación Vue y la sirve en Express, no enfrentará este problema y la sesión se compartirá como se esperaba.
Sin embargo, para el desarrollo, será molesto, puede enviar la aplicación front-end a través de Express.
Como ejemplo mínimo, puede probar el siguiente código. Ejecute su aplicación Vue como lo hace normalmente y luego ejecute el servidor con lo siguiente
const express = require('express'); const session = require("express-session"); const proxy = require('express-http-proxy'); const app = express(); app.use( session({ secret: 'keyboard cat', cookie: { maxAge: 60000 }, value: 0 }) ); app.get('/api', (req, res) => { req.session.value ++; res.json({ session: req.session.value }); }); app.use(proxy('http://127.0.0.1:8080')); app.listen(4001, '0.0.0.0', () => { console.log('Server is running at http://127.0.0.1:1234'); }); El contenido de la aplicación Vue estará disponible en http://127.0.0.1:1234 y si navega por http://127.0.0.1:1234/api y actualiza varias veces, verá que el valor de la sesión está presente y no se restablece.