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

Node.js认证登录API无法登录,Postman返回‘用户未找到’错误

解决登录API返回"User not found"的问题

1. 核对请求体参数与用户名匹配

  • 确认Postman发送的登录请求体中,username字段名和代码里的req.body.username完全一致,避免出现字段名拼写错误(如userName、user_name)。
  • MongoDB的findOne查询默认大小写敏感,若注册时用了"Admin",登录输入"admin"会匹配失败。可以统一处理用户名的大小写:
    // 注册阶段将用户名转为小写存储
    const newUser = new User({
      username: req.body.username.toLowerCase(),
      // 其他字段...
    });
    // 登录阶段同样转为小写查询
    const user = await User.findOne({ username: req.body.username.toLowerCase() });
    

2. 验证用户是否存在于数据库

  • 用MongoDB Compass或命令行直接查看users集合,确认注册的用户是否存在,且username字段值和登录输入完全一致。
  • 如果数据库中无该用户,说明注册API存在逻辑问题,需检查注册代码是否正确写入数据(比如是否有未捕获的异步错误、加密密码时抛出异常导致保存失败)。

3. 检查数据库连接与环境配置

  • 确认登录和注册API连接的是同一个MongoDB数据库,避免出现注册到测试库、登录查询生产库的情况。
  • 虽然不影响用户查找,但需保证登录解密用的process.env.PASS_SEC和注册加密时的密钥完全一致,避免后续密码验证失败。

4. 添加调试日志排查问题

  • 在登录代码中添加日志,打印查询的用户名和数据库返回结果,定位问题:
    router.post("/login", async (req, res) => {
      try {
        console.log("查询用户名:", req.body.username); // 新增调试日志
        const user = await User.findOne({ username: req.body.username });
        console.log("数据库返回用户:", user); // 新增调试日志
        if (!user){
          return res.status(401).json("User not found"); 
        }
        // 后续代码...
      } catch (err) {
        res.status(500).json(err);
      }
    });
    
    运行服务后查看控制台输出,确认查询参数是否正确,以及数据库是否真的没有匹配到用户。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 04:55:21