1

我使用 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

}

4

1 回答 1

3

如果出现错误,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)
  }
});
于 2019-05-02T11:25:07.280 回答