[英]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個字符長。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.