我正在尝试从服务器验证用户,使用密码在Meteor中创建的密码并存储在DB中。但密码永远不匹配。我做错了什么?
var bcrypt = require('bcryptjs');
var crypto = require('crypto');
var raw_pass = 'my_pass';
var pass = crypto.createHash('sha256').update(raw_pass).digest('hex');
var encryptedPassword = bcrypt.hashSync(pass, bcrypt.genSaltSync(10));
bcrypt.compare(doc.services.password.bcrypt, encryptedPassword, function(err, result) {
if(result) {
console.log('OK');
}
else {
console.log(403);
}
});
答案 0 :(得分:1)
bcrypt.compare的参数是'plain string'和'encrypted string'。所以正确的解决方案是:
{{1}}
答案 1 :(得分:1)
检查生成的流星的普通密码的正确方法是使用sha256和bcrypt,如下所示
var bcrypt = require('bcrypt')
var sha256 = require('sha256')
const samePassword = bcrypt.compareSync(
sha256(plainTextPassword),
user.services.password.bcrypt
)
答案 2 :(得分:0)
如果您打印出bcrypt.compare
的输出,它会对我们有所帮助。
它可能返回0,这意味着成功,但在if语句中,0将被解释为false。
答案 3 :(得分:0)
帐户密码不使用加密密码。 它只使用bcrypt和salt来生成加密密码。
您可以查看比较密码here