我正在创建一个中间件,该中间件检查JWT令牌是否有效,为此,它需要调用外部API。如果令牌有效,则应继续常规功能。
这是我写的中间件(then
未触发):
app.use(function(req, res, next) {
if (!req.headers.authorization) {
return res.status(401).json({
status: 401,
message: 'Unauthorized Error: Invalid access token.'
}).end();
} else {
requestify
.request(process.env.SWF_AUTH_INFO, {
method: 'GET',
headers: {
'Accept-Language': 'nl',
Authorization: req.headers.authorization
}
})
.then(function(response) {
if (response.body.valid) {
next();
} else {
return res.status(401).json({
status: 401,
message: 'Unauthorized Error: Invalid access token.'
}).end();
}
});
}
});
我的问题:
我每次通话都停留在pending
上。我没有任何回应,也没有任何错误。在编写中间件之前,我所有的调用都运行良好。
这是我处理api请求的方式:
路线
/**
* Get all surveys associated with a participant
*
* URL: /participant/:id/surveys
* METHOD: GET
*/
router.get('/participant/:id/surveys', function(req, res) {
if (!req.params.id) {
return res.status(422).send('Participant id of null');
}
participantService
.getSurveys(req.params.id)
.then(data => {
res.status(200).send(data);
})
.catch(err => {
res.status(422).send(err);
});
});
服务:
function getSurveys(participantId) {
return participantModel.getSurveys(participantId);
}
型号:
function getSurveys(participantId) {
return new Promise((resolve, reject) => {
db.query(
...
),
(error, result) => {
if (error) {
dbFunc.connectionRelease;
reject(error);
} else {
dbFunc.connectionRelease;
resolve(result);
}
}
);
});
}
为什么我的中间件不发送任何响应?