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

如何从Express路由中调用JWT验证函数?现有写法存疑求修正

问题与解决方案:Express路由中正确挂载JWT验证中间件

我明白你想直接在路由层挂载JWT验证中间件、不想在控制器里处理的需求,你当前的路由写法确实有问题——app.route()方法只接受路径作为参数,第二个参数的中间件不会被正确识别。下面给你两种修正后的正确实现方式:

方式一:使用route().use()链式挂载中间件

这种方式适合需要给该路由的多个HTTP方法(比如GET、POST)都添加验证的场景:

var user = require('../controller/user.controller.js'); 
var token_verify = require('../../config/verify_jwt_token.js') 
module.exports = function (app) { 
    app.route('/register_user').post(user.register); 
    app.route('/login').get(user.login); 
    // 先挂载JWT验证中间件,再绑定GET请求处理函数
    app.route('/auth')
      .use(token_verify)
      .get(user.auth); 
}

方式二:直接在HTTP方法中传入中间件

如果只需要给/auth的GET请求添加验证,这种写法更简洁:

var user = require('../controller/user.controller.js'); 
var token_verify = require('../../config/verify_jwt_token.js') 
module.exports = function (app) { 
    app.route('/register_user').post(user.register); 
    app.route('/login').get(user.login); 
    // 将验证中间件作为get方法的第一个参数,先执行验证再调用处理函数
    app.route('/auth').get(token_verify, user.auth); 
}

两种方式的核心逻辑一致:请求会先经过token_verify中间件完成JWT验证,只有验证通过(调用next())后,才会执行user.auth控制器函数,完全满足你不在控制器内调用验证的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:28:18