Node.js 如何在Passport会话中保留动态添加的附加数据
我有一个简单的身份验证系统,它构建在Node.js之上的Passport.js上。我有一个用例,在这个用例中,我需要在会话中保留组织ID,该ID将在特定路线的命中时更新。 我使用中间件实现了这一点: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(); }); 但这不会在其他路径中保
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