gpt4 book ai didi

node.js - 在多个 dynos heroku 应用程序的 express 应用程序上设置 session

转载 作者:可可西里 更新时间:2023-11-01 09:07:35 26 4
gpt4 key购买 nike

我已经使用 express (node.js)+ mongodb 在单个 Heroku dyno 上实现了一些用户身份验证,并且一切正常。但是,当我增加测功机的数量(超过 1 个)时,我无法登录,我一直被重定向到我的登录页面,这意味着我的 session 尚未设置。这是我的代码:

checkCookies = function(req, res, next) {

  if(req.session.user){
res.locals.user = req.session.user;
next();
}
else{
res.redirect('/login');
}
};
app.use(express.cookieParser());
app.use(express.session({ secret: '0GBlJZ9EKBt2Zbi2flRPvztczCewBxXK',
cookie: {httpOnly: true, maxAge:14*24*60*60*1000}
}));

使用 mongodb 在 express/node.js 上处理共享 session 的最佳解决方案是什么?

最佳答案

以上答案具有误导性,因为它们暗示您不能在 Heroku 上的多个测功机之间共享基于 cookie 的 session 。

如果我使用 cookie-session,我可以跨多个测功机使用基于 cookie 的 session 而不是 express-session .该线程的第一篇文章中缺少的是 secret 值未传递给 cookie 解析器。这意味着每次进程重新启动或新的 dyno 启动时, Node 都会为解析器分配一个随机哈希。

为我做以下工作:

app.use(express.cookieParser('0GBlJZ9EKBt2Zbi2flRPvztczCewBxXK'))
app.use(express.session({
secret: '0GBlJZ9EKBt2Zbi2flRPvztczCewBxXK',
cookie: { httpOnly: true, maxAge: 14 * 24 * 60 * 60 * 1000 },
}))

关于node.js - 在多个 dynos heroku 应用程序的 express 应用程序上设置 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17308935/

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