除了 bcrypt 之外的一种比较密码的方法
Posted
技术标签:
【中文标题】除了 bcrypt 之外的一种比较密码的方法【英文标题】:A way to compare passwords besides bcrypt 【发布时间】:2021-02-02 17:13:13 【问题描述】:大家好,我目前正在处理验证表单,但遇到了问题
我的注册路线
`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",function(req,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,res,function()
res.redirect("/secrets")
)
else
req.flash("error","Incorrect email or password");
res.locals.message = req.flash();
return res.render("login")
)
)
我可以在登录时检查用户名字段和密码字段是否都为空以及我的数据库中是否不存在用户 但问题是当我的用户存在且密码错误时,我的逻辑无法捕捉到它 有没有办法可以比较散列和加盐密码与用户当前输入的密码以给出适当的错误代码,即给定用户名的密码不正确 谢谢...
【问题讨论】:
【参考方案1】:如果您使用 bcrypt 进行散列,则无法比较没有 bcrypt 的两个密码
【讨论】:
以上是关于除了 bcrypt 之外的一种比较密码的方法的主要内容,如果未能解决你的问题,请参考以下文章