NodeJS express – 如何在路由器中添加会话数据?

我需要添加一些会话数据快速路由器(使用快速会话和护照)。

我将数据正确存储到DB(mongo)中的用户logging中,并尝试将值设置为会话数据:

req.user.myData = "my session data"; 

不幸的是,用户数据只有在通过护照进行用户授权时才被序列化。 所以“myData”不会被存储到当前会话中。 新用户会话启动时,数据从数据库正确加载并可用。

有什么办法(我希望如此)在当前会话中提供数据?

ExpressJS世界中大多数这样的事情都是使用中间件完成的:

1)在middlewares文件夹中创buildjs文件: populateUserData.js

 'use strict'; module.exports = (req, res, next) => { if(!req.user) req.user = {}; req.user.someData = 'something'; next(); } 

2.1)护照后附上:

 app.use(passport.initialize()); app.use(passport.session()); app.use(require('./middlewares/populateUserData')); 

要么

2.2)将其附加到特定的路线:

 const populateUserData = require('./middlewares/populateUserData'); route.get('/api/users/me', passport.authenticate('basic', { session: false }), populateUserData, (req, res) => { res.json({ id: req.user.id, username: req.user.username }); }); 

要么

2.3)在一组路线中:

 app.use('/api/users', passport.authenticate('basic', { session: false }), require('./middlewares/populateUserData'), require('./routes/api/users')); 

也可以创build自己的中间件,这将是有益的,

例如: https : //github.com/num8er/alttab-nodejs-challenge/blob/master/app.js#L19