Я пытаюсь реализовать passportjs для обработки аутентификации.Теперь, как часть постановки проблемы, если вход в систему не удается, я должен перенаправить пользователя обратно на страницу входа с сообщением об ошибке.Но код, который я написал, не может этого сделать, и я не могу найти решение или обходной путь.
Это мои маршруты:
app.get("/login", function(req, res) {
res.render("loginPage", { message: req.flash("message") });
});
app.post(
"/handleLogin",
passport.authenticate("login", {
successRedirect: "/",
failureRedirect: "/login",
failureFlash: true
})
);
Это мой login.jsфайл со стратегией входа в систему:
passport.use(
"login",
new LocalStrategy(
{
passReqToCallback: true
},
function(req, username, password, done) {
// check in mongo if a user with username exists or not
User.findOne(
{
username: username
},
function(err, user) {
// In case of any error, return using the done method
if (err) return done(err);
// Username does not exist, log the error and redirect back
if (!user) {
console.log("User Not Found with username " + username);
return done(null, false, req.flash("message", "User Not found."));
}
// User exists but wrong password, log the error
if (!isValidPassword(user, password)) {
console.log("Invalid Password");
return done(
null,
false,
req.flash("message", "Invalid Password")
); // redirect back to login page
}
// User and password both match, return user from done method
// which will be treated like success
return done(null, user);
}
);
}
)
);
var isValidPassword = function(user, password) {
return bCrypt.compareSync(password, user.password);
};
Может кто-нибудь предложить решение, пожалуйста?