Node.js 使用Meteor创建的密码进行用户身份验证
我正在尝试从服务器验证用户,使用Meteor中创建的密码和存储在DB中的帐户密码。但是,密码从不匹配。我做错了什么Node.js 使用Meteor创建的密码进行用户身份验证,node.js,meteor,bcrypt,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 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);
}
});
如果您打印出
bcrypt.compare的输出,将对我们有所帮助。
它可能返回0,这意味着成功,但在if语句中,0将被解释为false。如果您打印出bcrypt.compare的输出,将对我们有所帮助。
它可能返回0,这意味着成功,但在if语句中,0将被解释为false。帐户密码不使用密码。
只有使用bcrypt和salt才能生成加密密码
您可以检查比较密码帐户密码不使用密码加密。
只有使用bcrypt和salt才能生成加密密码
您可以检查bcrypt的比较密码参数。比较参数为“普通字符串”和“加密字符串”。因此,正确的解决方案是:
var raw_pass = 'my_pass';
var pass-256 = crypto.createHash('sha256').update(raw_pass).digest('hex');
bcrypt.compare(meteor.password, pass-256, function(err, result) {
if(result) {
console.log('OK');
}
else {
console.log(403);
}
});
bcrypt.compare的参数为“普通字符串”和“加密字符串”。因此,正确的解决方案是:
var raw_pass = 'my_pass';
var pass-256 = crypto.createHash('sha256').update(raw_pass).digest('hex');
bcrypt.compare(meteor.password, pass-256, function(err, result) {
if(result) {
console.log('OK');
}
else {
console.log(403);
}
});
根据meteor生成的密码检查普通密码的正确方法是使用sha256和bcrypt,如下所示
var bcrypt = require('bcrypt')
var sha256 = require('sha256')
const samePassword = bcrypt.compareSync(
sha256(plainTextPassword),
user.services.password.bcrypt
)
根据meteor生成的密码检查普通密码的正确方法是使用sha256和bcrypt,如下所示
var bcrypt = require('bcrypt')
var sha256 = require('sha256')
const samePassword = bcrypt.compareSync(
sha256(plainTextPassword),
user.services.password.bcrypt
)
无论密码是否正确,结果总是“false”(布尔值)。什么是doc.services.password.bcrypt?是不是应该是pass
?很抱歉给您添麻烦了。这是Meteor在services/password/bcrypt中存储的数据库中的密码。关于bcrypt,本网站还有一些其他问题。请比较。可能有帮助。无论密码是否正确,结果总是“false”(布尔值)。什么是doc.services.password.bcrypt?是不是应该是pass
?很抱歉给您添麻烦了。这是Meteor在services/password/bcrypt中存储的数据库中的密码。关于bcrypt,本网站还有一些其他问题。请比较。可能会有帮助。我认为这不是真的使用bcrypt散列存储在数据库中的密码。//password
可以是字符串(在这种情况下,它将在bcrypt之前通过//SHA256)或具有属性digest
和/算法的对象(在这种情况下,我们使用bcryptpassword.digest
)//是的,你很在乎。这是使用rsa 256和digest。我认为这不是真的使用bcrypt散列存储在数据库中的密码。//password
可以是字符串(在这种情况下,它将在bcrypt之前通过//SHA256)或具有属性digest
和/算法的对象(在这种情况下,我们使用bcryptpassword.digest
)//是的,你很在乎。它是使用rsa 256和digest的。它不是这样工作的。meteor使用bcrypt和salt(默认情况下为10)在明文pwd经过sha256加密后生成密码,但这种方式不起作用。meteor使用bcrypt和salt(默认为10)在明文pwd被sha256加密后生成密码