我是使用使用JSON Web令牌验证Node.js API的新手,我在scotch.io上阅读this document但是我无法理解Token是否正确next()方法之后发生的事情
apiRoutes.use(function(req, res, next) {
// check header or url parameters or post parameters for token
var token = req.body.token || req.param('token') || req.headers['x-access-token'];
// decode token
if (token) {
// verifies secret and checks exp
jwt.verify(token, app.get('superSecret'), function(err, decoded) {
if (err) {
return res.json({ success: false, message: 'Failed to authenticate token.' });
} else {
// if everything is good, save to request for use in other routes
req.decoded = decoded;
next();
}
});
} else {
...
}
});
apiRoutes.get('/', function(req, res) {
...
});
apiRoutes.get('/users', function(req, res) {
...
});
apiRoutes.get('/check', function(req, res) {
...
});
app.use('/api', apiRoutes);
app.listen(port);
用户必须在此之后传递其他请求(我的意思是在令牌正确后)?
我认为在这个示例代码/路由将在检查令牌后调用它是正确的,好吗?我怎样才能选择其他方法来调用,因为/是在next()之后调用
答案 0 :(得分:1)
实际上next()要求nodejs继续下一步它是node.js异步循环中的任何东西。 Javascript实际上是单线程的,所以接下来会调用放在堆栈的任何方法。如果你不打电话给next()你的程序会卡住。并且在您传递给.use
在这种特殊情况下,它将通过此令牌中间件验证后调用下一个路由,您将作为匿名函数传递。
也看看这个方法 javascript node.js next()