gpt4 book ai didi

authentication - 未在生产中使用 express-session 设置 Cookie

转载 作者:行者123 更新时间:2023-12-02 04:26:46 25 4
gpt4 key购买 nike

我的应用程序分为客户端和服务器。 Client 是托管在 Now.sh 上的前端 Nextjs 应用程序,Server 是其后端使用 Express 创建并托管在 Heroku 上,因此域是 client-app.now.sh 和 server-app.herokuapp.com 。

认证

身份验证系统基于 cookie,我使用 express-session 来实现它。这是我的快速 session 配置

app.use(
session({
store:
process.env.NODE_ENV === "production"
? new RedisStore({
url: process.env.REDIS_URL
})
: new RedisStore({
host: "localhost",
port: 6379,
client
}),
name: "sessionID",
resave: false,
saveUninitialized: false,
secret: keys.SESSION,
unset: "destroy",
cookie: {
domain:
process.env.NODE_ENV === "production"
? ".client-app.now.sh"
: "localhost",
secure: process.env.NODE_ENV === "production",
httpOnly: true,
maxAge: 7 * 24 * 60 * 60 * 1000
}
})
);

Cors 是用“cors”包设置的:
app.use(
cors({
origin:
process.env.NODE_ENV === "production"
? process.env.CLIENT_URL
: "http://localhost:3000",
credentials: true
})
);

客户端配置了 Apollo,HttpLink 中的“凭据”设置为“包含”。

问题是具有 session ID 的 cookie 在开发中正确设置,但在生产中未正确设置。这可能与我在不同域上托管客户端和服务器的事实有关吗?

最佳答案

我的生产节点服务器位于反向代理之后。这会导致节点不信任代理,因此不会设置 cookie。

我必须在生产中启用信任第一个代理。
app.set('trust proxy', 1) // trust first proxy
更多信息请查看 express-session 's docs on the topic.

关于authentication - 未在生产中使用 express-session 设置 Cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53819310/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com