我以前看过这个问题,但是使用其他语言(C#和PHP),但是我正在使用Javascript。我将用户名和密码存储到我的数据库中,但是密码通过bcrypt散列。
我可以正确存储它,但是不能从数据库中提取它并进行正确比较。它总是在控制台上记录我的“密码不匹配”消息。
这是我的注册码,用于将用户名和密码存储到我的数据库中。
app.post('/register', function (req, res) {
var usernameCollection = mongoDBDatabase.collection('accounts');
username = req.body.username;
bcrypt.hash(req.body.password, saltRounds, function (err, hash) {
usernameCollection.insertOne({
personId: req.body.username,
username: req.body.username,
password: hash
}).then(function(data) {
if (data) {
//res.redirect('/' + username);
//window.location.href = "/" + username;
}
});
});
});
这是我的代码,在这里我在数据库中搜索用户名,并尝试将密码进行比较。
//login page: storing and comparing email and password,and redirecting to home page after login
app.post('/login', function (req, res) {
var usernameCollection = mongoDBDatabase.collection('accounts');
var username = req.body.username;
var enteredPassword = req.body.password;
usernameCollection.findOne({
$or:[
{ username: username}
]
}).then(function(user){
if (user) {
console.log('That username was found in the database');
bcrypt.compare(enteredPassword, user.password, function(err, result){
if(result == true){
console.log('Password matches!');
res.redirect('/' + username);
}
else{
console.log('Password did not match');
res.redirect('/');
}
});
}
else{
console.log('The username ' + username + ' was NOT found in the database');
}
});
});
我只想将存储的密码与输入的密码进行比较,并确认它们相同以登录用户。