es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  , , , ,

Answer

  1. Avatar for 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.

Comments are closed.