gpt4 book ai didi

node.js - Node Passport session 在后续调用中丢失

转载 作者:搜寻专家 更新时间:2023-11-01 00:25:37 25 4
gpt4 key购买 nike

我相信我已经正确配置了所有内容:

app.configure(function() {
app.use(express.cookieParser('secret message')); // secret it set here in new version of express or connect
app.use(express.bodyParser());
app.use(express.session());
app.use(passport.initialize());
app.use(passport.session());
});

当请求使用正确的凭据“登录”时:

app.post('/api/login', passport.authenticate('local'), function (req, res, next) {
console.log(req.session.passport); // {"user":"5259f2739d4323000a000003"}
});

req.session.passport 已填充:

"passport": {"user":"5259f2739d4323000a000003"}

但是,当调用:

app.post('/api/checklogin', function (req, res, next) {
console.log(req.session.passport); // {}
})

req.session.passport 丢失:

"passport":{}

两次,req.session 看起来像这样:

{"cookie":{"originalMaxAge":null,"expires":null,"httpOnly":true,"path":"/"},"passport":{}}

** Passport 对象明显不同,如上所述

我假设我已经正确配置了 serializeUser,因为它正确地设置了这个属性。

我不完全确定 Passport 如何创建 session cookie,以及这些 cookie 如何持久存在。

我假设 req.session.passport 应该保留用户属性,但似乎 Passport 对象要么:

  1. 每次通话时重置
  2. 实际上并不在 session 中保存 Passport 属性
  3. 永远不会创建 session

我担心我可能会忽略一些大的事情——可能是我可能需要做的事情,而 Passport 并没有直接为我处理。

我不知道有什么方法可以测试 session 是否由 Passport 创建。

非常感谢任何建议或帮助。这是一场多日的斗争。

最佳答案

您使用的是集群设置吗?如果是这样,您需要停止使用默认的 MemoryStore,并切换到类似 connect-redis 的东西,因此您应用的不同实例可以访问共享的 session 数据。

关于node.js - Node Passport session 在后续调用中丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19351806/

25 4 0
文章推荐: javascript - Node.js 和线程
文章推荐: php - 如何在多核 pc 上运行 php
文章推荐: php - 在php中获取