簡體   English   中英

為什么 bcryptjs 比較給出 null 值,即使 hash 使用的是生成一個?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM