【问题标题】:Express-jwt controle token before route路由前的 Express-jwt 控制令牌
【发布时间】:2021-03-18 21:58:10
【问题描述】:

我的 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,但我有一个这样的返回,而不是像 401 这样的 errorHandler :

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="utf-8">
    <title>Error</title>
</head>

<body>
    <pre>Cannot GET /V1/</pre>
</body>

</html>

谢谢

【问题讨论】:

    标签: node.js express-jwt


    【解决方案1】:

    好的,我自己找到了解决方案,我必须在我的代码中添加这个:

    app.use(function(req, res, next) {
       res.status(404);
       res.json({returnCode: 404, returnLabel: '404: File Not Found', data:{}});
    return;
    });
    

    除了我的errorHandler已经到位。(显然404不会触发错误并且不适合处理程序)

    否则,如果 REST API 必须先检查令牌或路径,我找不到答案?

    【讨论】:

      猜你喜欢
      • 2014-10-18
      • 2020-04-19
      • 1970-01-01
      • 2020-11-17
      • 1970-01-01
      • 2020-01-26
      • 1970-01-01
      • 2016-08-20
      • 2022-07-22
      相关资源
      最近更新 更多