除bcrypt之外的一种比较密码的方法

问题描述

大家好,我目前正在使用身份验证表格,但遇到问题

我的注册路线

`app.post("/signup",function(req,res){`

User.register({username:req.body.username},req.body.password,function(err,registeredUser){

if(err){

req.flash("error",err.message);


  res.locals.message = req.flash();


  return res.render("signup")


}else{


 passport.authenticate("local")(req,res,function(){
  

res.redirect("/secrets")


})


 }

})

})

我的登录路线

app.post("/login",res){


const user = new User({


 username:req.body.username,password:req.body.password



 })






if(user.username === ""){


   req.flash("error","Username is required");


  res.locals.message = req.flash();
    


 }else if(user.password === ""){
  req.flash("error","The password field is empty");


 res.locals.message = req.flash();
  return res.render("login")

}其他{

req.login(user,function(err){

`User.findOne({username:req.body.username},function(err,foundUser){

  if(foundUser){
    

passport.authenticate("local",{failureRedirect:"/login"})(req,function(){
   

   res.redirect("/secrets")
          
   

 })





  } else{
      

 req.flash("error","Incorrect email or password");
     

  res.locals.message = req.flash();
       

return res.render("login")


  }


  }


})


  }

})

我能够在登录时检查用户名字段和密码字段是否均为空以及数据库中是否没有用户 但是问题是当我的用户存在并且密码错误时,我的逻辑无法捕获它 有没有一种方法可以比较哈希密码和盐腌密码与用户当前键入的密码以提供适当的错误代码,即密码对于给定的用户名不正确 谢谢...

解决方法

如果使用bcrypt进行哈希运算,则无法在没有bcrypt的情况下比较两个密码