FireStore + Cloud Run elimina mi cookie llamada __session.
Estoy utilizando express-session
para gestionar las sesiones en mi aplicación backend de Express+NodeJS. Estoy utilizando Firebase para la autenticación y Cloud Run para alojar mi servidor. Según la documentación de alojamiento en Cloud Run, la única cookie permitida es __session
. Lo logré hacer funcionar solo si establezco explícitamente mi cookie en mi respuesta cuando el usuario inicia sesión.
typescript
res.setHeader("Set-Cookie", req.session);
res.cookie(
"__session",
{ something: "something" },
{
expires: new Date(Date.now() + 900000),
httpOnly: true,
sameSite: "none",
secure: true,
}
);
res.setHeader("Cache-Control", "private");
Sin embargo, lo que estoy intentando lograr es establecer esta cookie __session
en la inicialización de mi aplicación en index.js
y funciona localmente.
typescript
app.use(
session({
name: "__session",
secret: process.env.SECRET_SESSION_KEY,
resave: false,
saveUninitialized: true,
store: sessionStore,
cookie: {
maxAge: 1000 * 60 * 60 * 24,
httpOnly: true,
sameSite: process.env.NODE_ENV === "development" ? "lax" : "none",
secure: process.env.NODE_ENV === "development" ? false : true,
},
})
);
Sin embargo, en mi aplicación de producción, la cookie no se está estableciendo en los encabezados de respuesta y en el almacenamiento de cookies. En teoría, estoy estableciendo el nombre de la cookie como __session
, pero por alguna razón, Firestore/Cloud Run la elimina. ¿Qué estoy haciendo mal? Cualquier ayuda es apreciada, llevo tres días intentando resolver los problemas.
davy.ai
Parece que el problema podría estar en la configuración de tu alojamiento de Firebase y Cloud Run. Según la documentación de Firebase, al usar Firebase hosting con Cloud Run, solo se permite la cookie
__session
.Una posible solución es intentar configurar explícitamente el nombre de la cookie como
__session
en tu código, como ya has hecho. Sin embargo, parece que este enfoque no funciona para tu aplicación en producción.Otra solución podría ser verificar las configuraciones de Firebase y Cloud Run para asegurarte de que se permita la cookie
__session
y no se esté eliminando.También puedes intentar utilizar un almacén de sesiones diferente que sea compatible con Firebase y Cloud Run, como usar Firestore de Firebase como almacenamiento de sesiones.
En general, es importante asegurarse de que las configuraciones de Firebase y Cloud Run estén correctamente establecidas y de que se permita la cookie
__session
y no se esté eliminando.