Возможно, проблема в том, что вы ничего не возвращаете, если foundUser
равно нулю или пароль не совпадает.
Если есть какая-либо ошибка, вы можете перенаправить ее на маршрут /login
с запросомпараметр (err), который может быть прочитан клиентом с использованием JS при загрузке страницы. Если есть непустой параметр запроса err
, прочитайте его и покажите в каком-нибудь всплывающем окне.
res.redirect("/login?err=The username does not exist");
//connect to mongodb
mongoose.connect("mongodb://localhost:27017/userDB", {
useNewUrlParser: true
});
const userSchema = {
username: String,
password: String
};
const User = new mongoose.model("User", userSchema);
app.get("/", function(req, res) {
res.render("home"); //render home.ejs
});
app.get("/login", function(req, res) {
res.render("login"); //render login.ejs
});
app.post("/login", function(req, res) {
const username = req.body.username;
const password = req.body.password;
try {
User.findOne({
username: username
}, function(err, foundUser) {
if (err || !foundUser) {
return res.redirect("/login?err=The username does not exist");
}
if (foundUser.password !== password) {
// you can use bcryptjs for hashing and comparing hashed values.
return res.redirect("/login?err=The username or password is invalid");
}
res.redirect("/counter");
});
} catch (error) {
res.redirect("/login?err=something went wrong!");
}
});
Подробнее об обработке аутентификации вы можете прочитать в nodeJS здесь . также проверьте passportjs