У меня есть страница регистрации, на которой пользователи могут отправить запрос в базу данных. Перед отправкой запроса я изменяю пароль на алгоритм salt + ha sh.
ПРИМЕР ИЗ БД:
имя пользователя: aUser1234
пароль: password12345
hashed: $2b$13$dTbz4IeMdeXkqHwCL7Lzqe8NKNyKBvA2mQWk8gnPDLWc4O6hyvew2
Я пытаюсь получить хешированный пароль из своей базы данных, но у меня есть три вопроса по моему коду.
- Как получить доступ к хешированный пароль из базы данных после проверки существования имени пользователя?
- Как мне затем использовать
await bcrypt.compare(password, hashedPassowrd);
в getConnection().query()...
- Должна ли функция обратного вызова
router.post
быть async
также?
router.post('/user_login', async (req, res) => { //Does this needs to be an async callback function?
const username = req.body.thisUsername; //aUser1234
const password = req.body.thisPassword; //password12345
const sqlString = "SELECT username FROM student_demographics WHERE username = ?";
getConnection().query(sqlString, [username], async (err, results, fields) => {
if(err){
res.sendStatus(500);
}
if(results.length){
console.log("NO ERRORS HERE"); //WORKS OKAY UNTIL HERE
//HOW TO GET HASHED PASSWORD AND STORE IT ON VARIABLE
const isValid = await bcrypt.compare(password, hashedPassowrd); //ERROR
if(isValid){
//PASSWORD MATCHED
res.redirect('/homePage.html');
res.end();
}else{
//PASSWORD DIDN'T MATCH
res.redirect('/login.html');
}
}else{ //THE USERNAME DOES NOT exists
console.log(" > The username or password are invalid :(")
res.redirect('/login.html');
res.end();
}
});
});