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

auth中间件执行后,路由处理函数无法运行的问题求助

问题解决方法

你的auth中间件犯了一个核心错误:验证通过后不应该自行返回响应,而是要调用next()函数传递请求到后续的路由处理逻辑。

当你在中间件里执行return res.status(200).json(...)时,已经向客户端发送了响应,整个HTTP请求的响应周期就此结束,后面的router.get回调自然不会被执行。

修改后的auth中间件代码如下:

function auth(req, res, next) {
    const token = req.cookies.token;

    if (!token) {
        return res.status(401).json({message: "No token"});
    }

    jwt.verify(token, process.env.SECRET_TOKEN, (err, decoded) => {
        if (err) {
            return res.status(401).json({message: "Invalid token"});
        }

        req.user = decoded;
        // 调用next()让请求继续流向后面的路由处理函数
        next();
    });
}

另外补充一个细节:你的路由回调里用了req.params.user,但当前路由是/,没有定义URL参数user,这里会拿到undefined。如果用户信息是从token解码得到的,应该改用req.user来获取,比如:

router.get('/', auth, function(req, res){
    // 根据你的token payload结构,使用对应的字段,比如req.user.id或req.user.username
    funcs.getBalance(req.user.id, function(err, result){
        if (err) {
            console.log(err);
            res.status(500).json({error: err.message});
        } else {
            res.status(200).json(result[0]);
        }
    })
});

内容的提问来源于stack exchange,提问作者Valtteri K.A.P

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 06:03:28