[英]why bcryptjs compare gives null value even though hash used is generated one?
出於身份驗證目的,當我嘗試比較相同字符串的此密碼時,我將散列密碼存儲在 MongoDB 中,bcryptjs 會拋出 null 值。
它以二進制形式存儲字符串“123”的哈希密碼。 這是我的生成代碼
import bcrypt
salt = bcrypt.gensalt()
password = bcrypt.hashpw(request.form['password'].encode('utf-8'), salt)
當我嘗試將此與用戶輸入的密碼“123”進行比較時,我得到一個 null 值。
123 $2b$12$URN6pyD4SsOgIXALvr.jIuy2hvxlxva.ioamDNtMhAwvWb9/nLdhO null
這是我使用 bcryptjs 的 nodejs 代碼,用於將用戶密碼與散列數據庫密碼進行比較
userSchema.methods.comparePassword = function (passw, cb) {
var user = this;
console.log((passw === user.password) ? 'passwords match' : 'passwords dont match' );
console.log(passw +" "+ user.password )
bcrypt.compare(passw, user.password, function (err, isMatch) {
console.log(passw +" "+ user.password +" " +isMatch )
if(err) {
return cb(err)
}
cb(null, isMatch)
})
}
即使我輸入相同的字符串“123”,我也會得到null值我在這里到底做錯了什么?有人可以指出我的錯誤嗎?
我認為您在將數據發送到“bcrypt.compare”方法時犯了錯誤。 你應該做出改變:
bcrypt.compare(user.password, 'password from database')
.then(status => console.log(status))
.catch (e) {
console.log(`Error: ${e}`);
}
有關更多詳細信息,請查看此。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.