我正在尝试在可能根据请求更改的函数之间传递数据。有没有办法全球存储这些细节?
我的想法是拥有一个authCheck功能,当有人访问任何路由/*
时,该功能会被处理。然后该函数将检查其令牌是否有效。如果是,程序继续,如果不是,那么它就在那里停止。如果令牌有效,我想为他们的ID设置一个可以访问的变量,而不必在每个函数中不断地进行SQL查询。
答案 0 :(得分:4)
您可以创建始终运行的use
函数并将数据附加到req
,如下例所示:
app.use(function (req, res, next) {
// Just an example...
db.query('SELECT * FROM tokens WHERE dat = ?', [req.cookies.token], function (err, result) {
// Check token...
if (err || results.length === 0) {
next(err || 'Invalid token');
} else {
// Set in req obj for other functions to access
req.token = results[0].dat;
next();
}
});
});
app.get('/', function (req, res) {
// Example render template with token attached...
res.render('test', {token: req.token});
});