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

Node.js+JWT+MySQL注册登录系统登录返回incorrect username错误如何解决

问题排查与修复方案

你接口返回incorrect username说明代码走到了数据库查询结果为空的分支,按以下优先级排查即可:

  • 检查接口入参是否正确
    在db.query执行前打印req.body.user_name,确认前端传参的字段名和你取值的字段名一致,比如前端传的是username而非user_name的话,取值为undefined自然查不到对应结果。
  • 核对数据库字段与存储内容
    1. 确认users表的用户名字段名确实是user_name,如果表字段实际为username,SQL语句匹配不到字段会返回空结果
    2. 检查已注册的用户名存储值和登录传入值是否一致,比如是否存在前后空格、大小写差异,如果数据库排序规则为大小写敏感,拼写不一致会导致匹配失败
  • 优化SQL查询写法
    你当前的SQL拼接写法存在转义异常的风险,换成官方推荐的参数化查询写法,避免特殊字符转义错误导致匹配失败:
    // 替换原来的db.query写法
    db.query('select * from users where user_name = ?', [req.body.user_name], (err, result) => {
      // 原有逻辑
    })
    
  • 其他代码缺陷修复
    你现有代码中bcrypt校验部分存在逻辑错误:if (bErr)分支先执行了throw bErr,后续的return语句永远不会执行,抛出错误会直接导致接口500,建议调整为:
    if (bErr) {
      console.log(bErr)
      return res.status(401).send({msg:"密码校验失败"})
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 03:45:03