我有一个.all
端点,可以连接到accounts
的所有端点。我想要做的是检查一个令牌然后如果它是真的,进入实际请求的端点。
我认为next()
应该这样做,但是无论令牌是否有效,都会调用其他请求。
我做错了什么?
router.all(['/accounts', '/accounts/*'], (req, res, next) => {
admin.auth().verifyIdToken(req.headers.authorization)
.then((token) => {
// TODO: Fix so that this actually works, now the other routes are being called regardless
next();
}).catch((error) => {
res.send({
error: error,
data: {
account: null,
message: 'Invalid token',
status: 401
}
});
});
});
router.post('/accounts', (req.res, next) => {});
router.post('/accounts/:uid', (req.res, next) => {});
如果verifyToken函数成功,我怎样才能确保.all端点只能继续使用/ accounts或/ accounts /:uid?显然,next()在阻止连续请求方面没有做任何事情。
答案 0 :(得分:0)
如果你在捕获中没有return
那么它将继续到下一个路线,如果你返回它会打破链:
router.all(['/accounts', '/accounts/*'], (req, res, next) => {
admin.auth().verifyIdToken(req.headers.authorization)
.then((token) => {
next();
}).catch((error) => {
return res.send({
error: error,
data: {
account: null,
message: 'Invalid token',
status: 401
}
});
});
});