Node.js 节点Passport会话在后续调用中丢失

Node.js 节点Passport会话在后续调用中丢失,node.js,passport.js,Node.js,Passport.js,我相信我已正确配置了所有内容: 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.initial

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

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"}
});
当使用正确的凭据请求“登录”时:

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是如何创建会话cookie的,以及这些cookie是如何持久的

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

  • 每次通话都会重置
  • 不会在会话中实际保存Passport属性
  • 永远不会创建会话
  • 我担心我可能忽略了一些重大的事情——可能是我需要做的事情,因为Passport不能直接为我处理

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


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

    您是否使用群集设置?如果是这样,您需要停止使用默认的
    MemoryStore
    ,并切换到类似的模式,以便应用程序的不同实例可以访问共享会话数据。

    我没有使用群集设置,是吗?为什么默认内存存储不起作用。我不相信我创造了不止一个瞬间谢谢你的帮助Jared你能解释一下真正的问题是什么吗?我遇到了完全相同的问题,但是切换到Redis商店并不能解决这个问题。在连续调用时,
    反序列化用户
    函数仍然不会被调用,会话的
    passport
    属性也不会从以前序列化的值还原。能否显示您的
    反序列化用户