我正在使用 bcrypt 来散列我的数据库密码!但最近我看到我的比较方法起作用了。我在网上搜索解决方案并在意识到它们不起作用后缩小了范围!
我在这里访问了这个 bcrypt 生成器:https://www.devglan.com/online-tools/bcrypt-hash-generator
然后我将我的密码粘贴到我选择的正确轮数中,并获得了我的在线哈希密码,但它在我的 bcyript 比较方法中并且有效。我这样做了 3 次,以确保它不仅仅是侥幸,每次它都有效,但是当我使用我的常规数据库哈希密码时,它总是返回 false!我如何使 bcyrpt 正确散列密码帮助!
我的代码: usershema:
UserShema.pre('save',async function(next){
const salt = await bcrypt.genSalt()
this.password = await bcrypt.hash(this.password,5)
next()
})
UserShema.pre("save", function (next) {
let user = this;
user.password = user.password.replace(/ /g, "");
next();
})
我的路线:
module.exports.login = async (req,res,next)=>{
try {
const username = req.body.username
const password = req.body.password
const user = await User.findOne({username})
let tempuser = 1
if(user){
const auth = await bcrypt.compare(password, user.password)
console.log(auth)
if (auth) {
tempuser = user;
const jwt = createJwt(tempuser._id)
return res.json({
message: 'sussecess',
person: tempuser,
jwt: jwt
})
}else{
return res.json({
status: 'fail',
cause: 'All',
message: 'user not there signup with you data please!'
})
}
}else{
next(error)
}
console.log('bro')
console.log(user)
} catch (error) {
next(error)
}
}
您好,答案是我使用的是 bycrpt。它是一个需要特定节点版本才能工作的包,一些节点版本会产生错误,所以答案是切换到 bcyrptjs,因为它适用于更多节点版本。