簡體   English   中英

節點JS bcrypt比較返回false

[英]Node JS bcrypt compare returns false

因此,我看到一些有關bcrypt比較返回錯誤的帖子,但似乎沒有一個對我來說是解決方案。

關於什么的簡要說明:

登錄使用護照處理。 使用“ mysql”包將憑據存儲在MySQL數據庫中。

這兩者似乎都可以與純文本密碼一起正常工作。

散列並保存到數據庫的代碼:

    var newPlayer = (email,username,password,callback) =>{
        if(email && username &&password){
            bcrypt.hash(password, 16, function(err,hash){
                var sqlstr = sql.format("INSERT INTO players (email,username,password) VALUES (?,?,?);",[email,username, hash])
                console.log(sqlstr);
                connection.query(sqlstr,function(err, rows) {
                    if(err)console.log("[MYSQL] Error:",err);
                    if(callback)callback(err);
                })

            })

        } else {
            throw Error("[MYSQL]  New Player requires email, username and password");
        }

    }

以及用於比較的代碼(護照配置的摘錄):

        DAO.getPlayer(email,function(player){
            if(player)
            bcrypt.compare(password,player.password,(err,match)=>{
                if(err){
                    console.log("[PASSPORT] BCRYPT ERR:",err)
                    done(null,false)
                }
                else if(match)
                return done(null,player)
                else
                return done(null, false)
            })
            else
            return done(null, false)
        })

在此先感謝您的幫助,如果需要指定某些內容,請告訴我! :)

bcrypt生成的哈希將為60個字符。 嘗試增加列的大小。

哈希信息

組成結果哈希的字符是./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789$。

產生的哈希值將為60個字符長。

https://github.com/kelektiv/node.bcrypt.js#hash-info

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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