cmc*_*mcd 8 javascript bcrypt node.js
我很困难,试图让我的密码成功地与使用节点的bcrypt进行比较.也许我错过了一些东西,但在创建帐户时,我在注册方法中执行以下操作(某些代码缩写):
bcrypt.genSalt(10, function(err, salt) {
if(err) {
}
bcrypt.hash(user.Password, salt, function(err, hash) {
console.log('hashing and saving');
db.query(db insert code, function (error, rows, fields) {
if(error) {
console.log(error);
res.setHeader('500', { 'Content-Type': 'x-application/json'});
res.send({UserId: 0, ErrorMessage: 'Something terrible happened.'});
} else {
console.log('User created : ' + rows.insertId);
res.setHeader('200', { 'Content-Type': 'x-application/json'});
res.send({UserId: rows.insertId});
}
});
});
});
return next();
Run Code Online (Sandbox Code Playgroud)
一切正常.我的数据库有加密密码.但是当用户登录时,我无法从bcrypt.compare获得成功结果:
db.query(get account code, function(error, rows, fields) {
if(rows.length == 1) {
bcrypt.compare(request.params.password, rows[0].Password, function(err,res) {
if(err) { console.log(err.toString()); }
if(res == true)
{
response.setHeader('200', { 'Content-Type': 'x-application/json' });
response.send({result: true});
} else {
response.setHeader('401', { 'Content-Type': 'x-application/json' });
console.log('invalid password');
response.send({result:false});
}
});
}
});
return next();
Run Code Online (Sandbox Code Playgroud)
我总是以无效密码结束.在比较我从数据库中取出的内容之前,是否需要使用明文密码并重新加密?
Was*_*lam 13
bcrypt 的比较方法的参数应该是
bcrypt.compare(actual_password, encrypted_password)
代替
bcrypt.compare(encrypted_password, actual_password)
=> 加密密码应该是第二个参数。
你可以跳过做bcrypt.genSalt和使用bcrypt.hash(password, 10, function(err, hash) {..});
你的比较功能对我来说似乎不错.
这对我来说很好:
var bcrypt = require('bcrypt');
bcrypt.hash('mypassword', 10, function(err, hash) {
if (err) { throw (err); }
bcrypt.compare('mypassword', hash, function(err, result) {
if (err) { throw (err); }
console.log(result);
});
});
Run Code Online (Sandbox Code Playgroud)
对我来说这只是一种争论障碍
正确的顺序
bcrypt.compare(plainPasswordToCheck, hashedPasswordOnStorage)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15121 次 |
| 最近记录: |