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
相关产品推荐
相关产品推荐

