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

为什么拆分后的Node.js认证路由使用错误JWT也能返回正常结果

你碰到的问题核心有两个:

  1. 你在/lib/routes/convert.js中通过require('express')()创建了独立的全新Express实例,该实例和你index.js中使用的全局app实例完全隔离,你在这个独立实例上配置的JWT鉴权逻辑完全不会作用到主应用的请求链路中。
  2. 你当前index.js中挂载的是./lib/api-calls/convert.js,如果你写的新路由存放在/lib/routes/convert.js,挂载路径不匹配也会导致你的新路由逻辑不生效。

修复方案

第一步:修改子路由文件/lib/routes/convert.js

不要在子路由中创建独立Express实例,改用Express官方推荐的Router来定义子路由,也不需要重复执行鉴权初始化逻辑:

// 用Router代替独立express实例
const router = require('express').Router();

router.get('/v3/convertw3w/:locationValue/:countryCode', function (req, res) {
    res.status(200).send({ status: 'OK' });
});

module.exports = router;

第二步:修改index.js配置

调整路由挂载路径,所有挂载到全局app下的路由会自动继承你在主应用中配置的JWT鉴权逻辑:

//  Security Enabled index.js
//
const { app } = require ('./lib/deps/init_dependencies.js');
const { enableSecurity } = require("./security");
const main = async () => {
    // 全局开启JWT鉴权,所有后续挂载的路由都会生效
    await enableSecurity(app);
    
    // 挂载你写的新路由,路径对应你实际存放的路由文件位置
    app.use(require('./lib/routes/convert.js'));
        
    app.get('/v1/createSession:key/:limit', function (req, apiResponse) {
       // 原有正常工作的路由逻辑
    });
}
main()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 10:00:04