В моем отрендеренном шаблоне nunjucks я сформировал его так, чтобы он принимал имя пользователя и пароль, которые будет вводить пользователь. После нажатия кнопки «Отправить» он должен выполнить поиск в базе данных в моем экспресс-файле javascript, чтобы узнать, что это за пользователь. набрано в базе данных.
Однако я продолжаю получать сообщение об ошибке.
Я убедился, что нет орфографических ошибок или чего-то в этом роде, но я не уверен, как исправитьэта ошибка. Это мое сообщение об ошибке:
Ошибка: недопустимые аргументы: не определено, не определено в Object.bcrypt.compareSync
Мой экспресс-код, который выполняет обработку кнопки отправки.
let usersdb = new DataStore({filename: __dirname + '/usersDB', autoload: true});
app.post('/user', express.urlencoded({extended:true}), function (req, res) {
console.log(req.body);
let username = req.body.username;
let password = req.body.password;
// Find user
let auser = usersdb.find(function (user) {
return user.username === username
});
if (!auser) {// Not found
res.render("loginError.njk");
return;
}
//**** Its like the error happens on this line below*****
let verified = bcrypt.compareSync(password, auser.passHash);
if (verified) {
let oldInfo = req.session.user;
req.session.regenerate(function (err) {
if (err) {
console.log(err);
}
req.session.user = Object.assign(oldInfo, auser, {
loggedin: true
});
res.render("welcome.njk", {user: auser});
});
} else {
res.render("loginError.njk");
}
});
Мой ожидаемый результат заключается в том, что, когда пользователь вводит свое имя пользователя и пароль на странице отображаемых nunjucks (и его действительные имя пользователя и пароль (действительные значения, которые были найдены в базе данных пользователей)), он будет отображать страницу приветствия.
Если он не найден, он должен отобразить страницу logerror.njk
Большое спасибо, ребята!