我的主文件称为 index.js,我在其中加载了一些内容,然后分支到位于不同文件中的路由。我现在的问题是因为我有几个 app.use 像这样检查有效令牌的部分。
app.use(function(req, res, next) {
// check header or url parameters or post parameters for token
var token = req.body.token || req.query.token || req.headers['x-access-token'];
// decode token
if (token) {
console.log('MyToken:'+token)
// verifies secret and checks exp
jwt.verify(token, 'MySuperSecret', function(err, decoded) {
if (err) {
if (err.name === 'TokenExpiredError')
{
return res.status(401).send({ success: false, error: err.name, message: err.message, expiredAt: err.expiredAt })
}
else{
return res.send({ success: false, message: 'Failed to authenticate token.' });
}
} else {
// if everything is good, save to request for use in other routes
console.log('success')
req.decoded = decoded;
res.locals.decoded = decoded;
next();
}
});
} else {
// if there is no token
// return an error
return res.status(403).send({
success: false,
message: 'No token provided.'
});
}
})
我的问题是,如果我在声明任何单独的路由之前将这个 app.use 函数放在我的 index.js 中,例如
app.use('/api', apiRoutes);
代码仍然会命中并使用 app.use 函数,还是我必须将 app.use 函数放在每个路由文件的顶部以保护下面的路由。如果一个人有超过 1 个路由文件,试图找出最好的方法是什么。