Экспресс-токен управления jwt перед маршрутом

#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 сначала проверять токен или путь?