【问题标题】:How to get status code in jwt token based error msg using nodejs?如何使用节点 js 在基于 jwt 令牌的错误消息中获取状态码?
【发布时间】:2019-09-20 21:16:47
【问题描述】:

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

}

【问题讨论】:

  • 您希望错误状态代码来自哪里?我预计错误代码来自 API 调用,而不是来自记事本验证

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


【解决方案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)
  }
});

【讨论】:

  • 假设如何在 .(token 无效,JWT 过期,必须提供 JWT) 上抛出不同的错误
  • @smith hari,您可以修改从 jwt.verify 返回的错误对象。
猜你喜欢
  • 2017-04-15
  • 2017-09-21
  • 2020-04-22
  • 2018-11-02
  • 2022-01-06
  • 2017-02-03
  • 2018-07-11
  • 2020-10-02
  • 2018-12-26
相关资源
最近更新 更多