You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

express-jwt 7.7.5中isRevoked报done is not a function问题排查

问题解决:express-jwt 7.7.5中isRevoked出现"done is not a function"错误

问题原因

express-jwt 7.x版本对isRevoked方法的API做了变更,不再支持传入done回调函数,而是要求该方法返回一个Promise(或直接返回布尔值):

  • 返回true表示token被吊销(拒绝访问)
  • 返回false表示token有效(允许访问)

你的代码中仍在使用旧版本的done回调写法,这就是报错的直接原因。

修复后的代码

将isRevoked函数修改为如下形式,去掉done回调,直接返回布尔值:

async function isRevoked(req, payload) {
    console.log(payload);
    // 非Admin用户直接返回true,拒绝访问
    if (payload.isAdmin === false) {
        console.log('Not Admin');
        return true;
    }
    console.log('Admin');
    // Admin用户返回false,允许访问
    return false;
}

额外注意事项

  1. 确保你的token payload中确实包含isAdmin字段,否则会导致判断逻辑失效
  2. 你的路由规则中已经对产品的GET请求开放权限,只有POST/PUT等修改类请求会触发JWT校验,符合你"仅允许Admin发布产品"的需求

内容的提问来源于stack exchange,提问作者Anuj Todankar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 13:36:30