Creé una aplicación de autenticación de usuario simple con React, node and Passport JS . Cuando está en localhost , almacena con éxito la sesión y conserva al usuario, pero después de implementarlo en heroku, no conserva la sesión.
Revisé la pestaña de redes y descubrí que el atributo sameSite está configurado de forma predeterminada en lax y si el cliente desea obtener cookies de sitios cruzados, debe configurarse en none y debe tener un conjunto de atributos secure . Pero cuando configuro sameSite en ninguno y seguro en verdadero, el cliente no obtiene la cookie del servidor (por ejemplo, el encabezado set-cookie no está presente en la respuesta)
.
No sé dónde estoy haciendo mal.
Este es mi servidor JS
// Middlewares app.use(express.json()); app.use( cors({ origin: "https://authclient.netlify.app", credentials: true, }) ); app.use( session({ secret: "secret", resave: true, saveUninitialized: true, cookie: { sameSite: "none", secure: true, }, store: MongoStore.create({ mongoUrl: dbURI }), }) ); app.use(cookieParser("secret")); app.use(passport.initialize()); app.use(passport.session()); require("./passportConfig")(passport); //______________________________________ //Routes app.post("/login", (req, res, next) => { passport.authenticate("local", (err, user, info) => { if (err) throw err; if (!user) res.send(info.message); else { req.logIn(user, (err) => { if (err) throw err; res.send("Logged In!"); }); } })(req, res, next); });