我正在尝试在每个请求可能更改的函数之间传递数据。有没有办法全局存储这些细节?
我的想法是有一个 authCheck 函数,当有人访问任何路由时处理该函数/*
。然后该函数将检查他们的令牌是否有效。如果是,程序继续,如果不是,那么它就停在那里。如果令牌有效,我想为他们的 ID 设置一个可以访问的变量,而不必在每个函数中不断地执行 SQL 查询。
您可以创建一个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});
});