Node.js 如何在Passport会话中保留动态添加的附加数据

Node.js 如何在Passport会话中保留动态添加的附加数据,node.js,backbone.js,express,passport.js,Node.js,Backbone.js,Express,Passport.js,我有一个简单的身份验证系统,它构建在Node.js之上的Passport.js上。我有一个用例,在这个用例中,我需要在会话中保留组织ID,该ID将在特定路线的命中时更新。 我使用中间件实现了这一点: app.use('/switchOrganization',function(req, res, next) { if(req.user) req.session.passport.user.activeOrg = 'my org'; next(); }); 但这不会在其他路径中保

我有一个简单的身份验证系统,它构建在Node.js之上的Passport.js上。我有一个用例,在这个用例中,我需要在会话中保留组织ID,该ID将在特定路线的命中时更新。 我使用中间件实现了这一点:

app.use('/switchOrganization',function(req, res, next) {
    if(req.user) req.session.passport.user.activeOrg = 'my org';
    next();
});
但这不会在其他路径中保留数据:

app.route('/someRoute').post(function(req,res){
    console.log(req.session.passport.user);
});

它不包含“activeOrg”值。哪里出错了?

反序列化user
函数中,用户对象被反序列化为
req.user
每个请求都会发生这种情况。因此,如果您在其中一个路由处理程序中对
req.user
进行更改,并希望后续的路由处理程序能够将其持久化,则仅此情况适用于该特定请求。如果重新请求
/someRoute
,它将不会具有您在新请求中未调用的另一个路由中所做的更改


相反,您应该保留对数据库的更改,以便在为下一个请求调用
反序列化user
函数时,它将从一开始就拥有您的数据

请参阅我的编辑。这是个错误!这只是我希望在会话中保留的临时数据。必须有某种方法在会话中保存数据,直到会话结束。否?在这种情况下,只需将其存储在
req.session