使用Meteor创建的密码进行用户身份验证

时间:2017-01-05 03:05:19

标签: node.js meteor bcrypt

我正在尝试从服务器验证用户,使用密码在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);
                }
            });

4 个答案:

答案 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