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

Node.js登录功能运行异常如何修复?附前后端相关代码示例

登录功能异常问题排查

核心问题点

  • 你的服务端登录逻辑完全没有对数据库查询结果做校验,只要SQL语句执行不报错,不管用户名密码是否匹配、是否存在对应账号,都会直接打印登录成功并跳转,这是最主要的问题。
  • 如果你没有在服务端代码中提前配置POST请求体解析中间件,req.body 中的 username 和 passcode 会是 undefined,导致SQL查询永远匹配不到结果。
  • 注意你打印的日志里有拼写错误:sucessfull 应为 successful。

修复后的代码示例

服务端中间件配置(先确认已添加,放在所有路由定义之前)

// 用于解析表单提交的请求体
app.use(express.urlencoded({ extended: true }))

修复后的登录接口逻辑

app.post('/login', (req, res) => {
  const { username, passcode } = req.body;
  // 先做参数非空校验
  if (!username || !passcode) {
    return res.status(400).send('用户名和密码不能为空');
  }

  const getAccount = "SELECT * FROM account WHERE username = ? AND passcode = ?";
  con.query(getAccount, [username, passcode], (err, result) => {
    if (err) throw err;
    // 校验查询结果长度,大于0才说明匹配到了有效账号
    if (result.length > 0) {
      console.log('Login successful');
      res.redirect('http://127.0.0.1:5500/');
    } else {
      res.status(401).send('用户名或密码错误');
    }
  })
})

额外注意事项

  • 明文存储密码风险极高,生产环境必须对密码做哈希加密后再存入数据库,查询时也需要先对传入的密码做相同哈希处理再和库中数据比对。
  • 直接throw err会导致服务崩溃,建议添加统一的错误捕获和返回逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 23:24:04