我需要添加一些會話數據快速路由器(使用快速會話和護照)。NodeJS express - 如何在路由器中添加會話數據?
我正確地存儲數據到DB(蒙戈)用戶記錄並嘗試將值設置爲會話數據:
req.user.myData = "my session data";
不幸的是,用戶數據僅在通過Passport用戶授權連載。所以「myData」不會存儲到當前會話中。當新用戶會話啓動時,數據從數據庫正確加載並可用。
是否有任何方法(我期望如此)在當前會話中提供數據?在ExpressJS
我需要添加一些會話數據快速路由器(使用快速會話和護照)。NodeJS express - 如何在路由器中添加會話數據?
我正確地存儲數據到DB(蒙戈)用戶記錄並嘗試將值設置爲會話數據:
req.user.myData = "my session data";
不幸的是,用戶數據僅在通過Passport用戶授權連載。所以「myData」不會存儲到當前會話中。當新用戶會話啓動時,數據從數據庫正確加載並可用。
是否有任何方法(我期望如此)在當前會話中提供數據?在ExpressJS
大多數這樣的事情的世界進行使用中間件:
1)middlewares
文件夾中創建的js文件: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)將它附加到spe cific路線:
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'));
也可以創建自己的中間件,這將是有益的,
例如:https://github.com/num8er/alttab-nodejs-challenge/blob/master/app.js#L19
Thx爲您的答案。它在其他情況下幫助我。 但在我原來的情況下沒有。這是相當具體的應用程序/路線。我能夠做一點解決方法。 而不是存儲到用戶數據,我直接存儲會話數據: req.session.myData; 然後檢查用戶和會話數據: 'var myData = req.user.myData;如果(req.session.myData){ myData = req.session.myData; }' – dalicrosKH
如果您想在應用程序路徑中使用它,請檢查我的更新答案,正如我所說的「大多數這樣的事情都是使用中間件完成的,cuz express本身就是基於中間件的框架。docs:http://expressjs.com/zh/guide /writing-middleware.html你可以鏈接你想要的中間件的數量。 – num8er
這正是我需要的。 – dalicrosKH
你不應該使用'req.session.myData'嗎?通過向會話對象添加屬性並保存會話,將數據放入會話中。該屬性將成爲未來請求會話對象的一部分。 – jfriend00