【问题标题】:express-jwt isRevoked given 500 internal server error without any messageexpress-jwt isRevoked 给出 500 内部服务器错误,没有任何消息
【发布时间】:2022-08-21 00:29:56
【问题描述】:

我是 nodejs、expressjs 的新手,并尝试通过创建中间件来使用 express-jwt 包对路由进行身份验证。 GET 路由一切正常,但是当我访问 POST 路由并尝试撤销令牌时,它返回 500 内部服务器错误而没有任何消息。 我很困惑,这背后的主要原因是什么。所以如果可能的话,请帮助我。 我的代码如下。

const { expressjwt: expressJwt } = require(\'express-jwt\');

function authJwt() {
    const secret = process.env.secret;
    const api = process.env.API_URL;
    return expressJwt({
        secret,
        algorithms: [\'HS256\'],
        isRevoked: isRevoked
    }).unless({
        path: [
            {url: /\\/api\\/v1\\/products(.*)/ , methods: [\'GET\', \'OPTIONS\'] },
            {url: /\\/api\\/v1\\/categories(.*)/ , methods: [\'GET\', \'OPTIONS\'] },
            `${api}/users/login`,
            `${api}/users/register`,
        ]
    })
}

async function isRevoked(req,payload,done) {
    if(!payload.isAdmin) {
        return done(null, true);
    }
    done();
}



module.exports = authJwt
  • 你能分享导致 500 响应的请求吗?
  • 这是本地主机上的 POST 请求 \"localhost:3000/api/v1/products\"
  • GET 请求可能工作正常,因为它们不受任何身份验证的保护......例如,您可以在 isRevoked 方法中添加一些异常处理。
  • @MohdHasan 我认为我们正在遵循相同的教程,您找到解决问题的方法了吗?如果是这样,请分享以帮助他人

标签: node.js express jwt access-token express-jwt


【解决方案1】:

这就是我解决这个问题的方法:

async function isRevoked(req, token) {
   
    if(!token.payload.isAdmin) {
        return true
    }
     return undefined;
}

isRevoked 接收 undefined 或 true。所以如果你发现用户不是管理员返回 undefined 否则返回 true

【讨论】:

  • 通过添加有关代码的作用以及它如何帮助 OP 的更多信息,可以改进您的答案。
  • @Tyler2P isRevoked 接收 undefined 或 true。因此,如果您发现用户不是管理员,则返回 undefined,否则返回 true。
猜你喜欢
  • 2022-09-23
  • 2022-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-26
相关资源
最近更新 更多