如何使用Node.js在基于JWT令牌的错误消息中获取状态代码?

时间:2019-05-02 10:58:33

标签: node.js express-jwt nodejs-server

我使用node.js和MongoDB实现了JWT令牌认证。一切正常。抛出错误消息也可以正常工作(令牌无效,JWT过期,必须提供JWT)。但是,如何在错误消息中自动获取适当的HTTP状态代码?

// jwt.js

function Verify_Token(accessToken) {
    jwt.verify(accessToken, config.get("jwtprivatekey"), function (err) {
        value = err

    });
    return value

}

1 个答案:

答案 0 :(得分:1)

如果出错,

jwt.verify将不返回任何数字状态代码。根据jsonwebtoken npm模块的文档,我们可以清楚地看到它在抛出错误时仅返回以下字段。

jwt.verify(token, 'shhhhh', function(err, decoded) {
  if (err) {
  /*
     err = {
        name: 'TokenExpiredError',
        message: 'jwt expired',
        expiredAt: 1408621000
     }
  */
  }
});

如果必须从nodejs Web服务器返回一些状态代码,则必须将状态代码以及jwt的错误消息嵌入到http响应中。像下面这样。

jwt.verify(token, 'shhhhh', function(err, decoded) {
  if (err) {

     err = {
        name: 'TokenExpiredError',
        message: 'jwt expired',
        expiredAt: 1408621000
     }
     return res.status(401).send(err)
  }
});