为什么我得到的“密码错误”响应是正确的?

时间:2019-11-23 23:55:53

标签: javascript authentication postman

我正在通过邮递员发布一些输入以登录用户。问题是,每当我输入正确的密码时,Postman都说我输入了错误的密码,即使它绝对正确。这是我要登录的用户: This

编辑:当我说邮递员说我输入了错误的密码时,我的意思是它给了我"Password is wrong"的答案:if(!validPass) return res.status(400).send("Password is wrong");

编辑2:这就是我在Postman中输入的内容: This

这是登录过程:

//LOGIN:
router.post('/login',async(req,res)=>{  

    //Validation
    const{error} = loginValidation(req.body);
    if(error) return res.status(400).send(error.details[0].message);

    //If user already in db
    const u = await User.findOne({email:req.body.email});
    if(!u) return res.status(400).send("Email is wrong");

    //Password check
    const validPass = await bcrypt.compare(req.body.password,u.password);
    if(!validPass) return res.status(400).send("Password is wrong");
    res.send("A ok");
});

对于更广泛的背景,这是我的完整项目:https://plnkr.co/edit/ydQwisGd3kVC06RqvhjR?p=catalogue 名称中的“ /”表示“文件夹/文件”。否则,它在根中。

谢谢。

1 个答案:

答案 0 :(得分:0)

在将正确的密码输入到正确的电子邮件中时,我希望u.password等于req.body.password,否则不要登录。这是我想出的:

const user_password = u.password;
    const password_history = req.body.password;
    if(user_password != password_history) return res.status(400).send("Password is wrong");