【发布时间】:2022-01-24 16:21:59
【问题描述】:
我正在使用express-session 在我的 Express+NodeJS 后端应用程序中管理会话。我使用 Firebase 进行身份验证,使用 Cloud Run 托管我的服务器。根据 Cloud Run 托管的文档,唯一允许的 cookie 是 __session。只有当我在用户登录时在我的响应中明确设置我的 cookie 时,它才能工作。
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");
但是,我想要实现的是我想在index.js 的应用初始化中设置这个__session cookie,它可以在本地工作。
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,
},
})
);
但是,在我的生产应用程序中,没有在响应标头和 cookie 存储中设置 cookie。理论上,我将 cookie 名称设置为 __session,但由于某种原因 Firestore/Cloud Run 将其删除。我究竟做错了什么?感谢任何帮助,我第三天试图解决这些问题。
【问题讨论】:
标签: firebase express cookies google-cloud-firestore google-cloud-run