Estoy usando una aplicación expresa con pasaporte.js y sesiones expresas para autenticar a los usuarios y almacenar sus datos en una base de datos de PostgreSQL. Todo funciona como se esperaba en el desarrollo, pero después de publicarlo en Heroku, cuando borro los datos del sitio a través del navegador o incluso cuando salgo de una cuenta, la sesión y la cookie no se restablecerán al redirigir a la página de inicio de sesión y la aplicación no ya no trabajo.
Así es como configuro la sesión exprés (estoy usando Connect PG Simple como tienda):
app.use( session({ secret: process.env.SECRET, resave: false, saveUninitialized: false, cookie: { maxAge: 604800, secure: isProduction ? true : false, sameSite: isProduction ? "none" : "lax", }, store: new pgSession({ pool: db, createTableIfMissing: true, }), }) );Aquí está mi lógica de cierre de sesión que destruirá la sesión y borrará la cookie (establece una nueva cookie después de la redirección en mi entorno de desarrollo):
// Logout usersRouter.post("/logout", checkNotAuthenticated, (req, res) => { req.logout(); req.session.destroy((err) => { if (err) throw err; res.clearCookie("connect.sid"); res.redirect("/users/login"); }); });Ahora todo el problema está ocurriendo en Heroku, pero logré encontrar dos formas de solucionarlo:
app.set("trust proxy", 1);¿Me estoy perdiendo de algo? ¿Por qué habilitar un "proxy de confianza" soluciona este problema?