0

我正在尝试在每个请求可能更改的函数之间传递数据。有没有办法全局存储这些细节?

我的想法是有一个 authCheck 函数,当有人访问任何路由时处理该函数/*。然后该函数将检查他们的令牌是否有效。如果是,程序继续,如果不是,那么它就停在那里。如果令牌有效,我想为他们的 ID 设置一个可以访问的变量,而不必在每个函数中不断地执行 SQL 查询。

4

1 回答 1

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}); 
});
于 2013-10-11T08:55:09.777 回答