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

NodeJS API应用浏览器访问后端图片提示用户未授权问题求助

问题原因&解决方案


1. 路径拼写不匹配

你访问的图片示例路径为/public/upload/xxx(upload为单数),但JWT白名单配置的正则、静态资源挂载的路径均为/public/uploads(uploads为复数,多了一个s),路径不匹配导致白名单规则未生效,触发了JWT授权校验。
你可以选择两种方案统一路径:

  • 访问路径改为/public/uploads/xxx,和现有配置保持一致
  • 把JWT白名单正则、静态资源挂载路径的uploads统一改为单数upload,和访问路径保持一致

2. 中间件执行顺序错误

Express中间件是按注册顺序从上到下执行的,你当前的注册顺序是先执行JWT校验,再处理静态资源请求。即使路径拼写正确,静态资源请求也会先经过JWT校验逻辑。
请调整app.js中的中间件顺序,把静态资源挂载放在JWT校验之前:

// 调整后的顺序
app.use("/public/uploads", express.static(__dirname + "/public/uploads"));
app.use(authJwt());
app.use(errorHandler);

3. isRevoked函数逻辑缺陷

当前isRevoked函数在请求无token、payload为空的情况下,调用!payload.isAdmin会抛出异常,需要补充判空逻辑:

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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 04:27:00