#node.js #express-jwt
#node.js #экспресс-токен управления jwt
Вопрос:
Мой API всегда в первую очередь проверяет действительность токена и, следовательно, всегда возвращает 401, даже если маршрут не существует, если токен исправен, он проверяет маршрут и возвращает 404, если маршрут не существует в это время.
Не должно быть наоборот, сначала проверка существования маршрута, а затем проверка токена?
Как это реализовать?
app.use(expressJwt({ secret: process.env.SECRET_TOKEN }).unless({ path: [
'/api/login'
]}));
app.use(errorHandler)
function errorHandler(err, req, res, next) {
if(err.status === '401') { // partie api PP avec token
res.status(401).json({returnCode: 100, returnLabel: 'KO', data:{}});
return;
}else if(err.status === '404'){
res.status(404).json({returnCode: 404, returnLabel: '404', data:{}});
return;
}else {
res.status(500)
res.json({error: err})
}
}
Более того, я не могу поймать 404 в моем состоянии, но у меня есть возврат, подобный этому, не в ErrorHandler, как 401 :
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Error</title>
</head>
<body>
<pre>Cannot GET /V1/</pre>
</body>
</html>
Спасибо
Ответ №1:
Хорошо, я сам нашел решение, мне пришлось добавить это в свой код :
app.use(function(req, res, next) {
res.status(404);
res.json({returnCode: 404, returnLabel: '404: File Not Found', data:{}});
return;
});
в дополнение к моему обработчику ошибок, который уже установлен.(по-видимому, 404 не вызывает ошибку и не помещается в обработчик)
В противном случае я не могу найти ответ, должен ли REST API сначала проверять токен или путь?