登录功能POST请求400错误排查求助(附相关代码)
登录POST 400错误排查方案
核心问题:请求参数键名不匹配
前端发送的密码字段键是userPassword,但后端尝试读取req.body.password,这直接导致密码验证逻辑失效,返回400错误。
前端login.js的fetch请求体:
body: JSON.stringify({ username, userPassword }),这里发送的密码字段标识为
userPassword后端userRoutes.js的密码验证逻辑:
const validPassword = await userData.checkPassword(req.body.password);这里读取的密码字段标识为
password,两者完全不匹配
修复步骤
二选一即可:
- 修改前端,统一密码字段键名:
// 先把变量名改成password const password = document.getElementById('inputPassword').value.trim(); // 再修改请求体 body: JSON.stringify({ username, password }), - 修改后端,适配前端的字段键名:
const validPassword = await userData.checkPassword(req.body.userPassword);
其他潜在问题检查
- 前端input类型不符合标准:
inputUsername的type是form-input,应改为text,虽然不影响值的获取,但符合HTML规范:<input type="text" class="form-control" id="inputUsername" /> - 查看后端日志:检查服务器端
console.log(userData)和console.log(validPassword)的输出,确认:- 是否能正确查询到对应用户
- 密码验证时传入的参数是否为空或异常
内容的提问来源于stack exchange,提问作者Bo Salinas
相关产品推荐
相关产品推荐

