Хорошо, я пробовал просмотреть кучу других похожих случаев, но не смог найти решение, так как оно действительно не подходило к тому, что у меня было.
Когда я пытаюсь войти в систему, я получаю сообщение об ошибке
Отсутствуют учетные данные
, если моя форма пуста или если какое-либо имя пользователя / пароль пуст.
Но если я заполню свою форму неверной информацией, Вместо этого я получаю свою собственную ошибку, которую я хочу.
Это мои маршруты
server.get('/login', async (req, res) => {
if(typeof req.user != 'undefined')
res.redirect('/loginRedirect')
else
res.render('public assets/template.ejs', {
page_title: "iWatched.xyz - Sign in/up",
page_file: "login",
page_data: {
login_error: req.flash(),
signup_error: req.flash()
},
user: req.user
});
});
server.post('/login',
passport.authenticate('local-login', {
successRedirect: '/loginRedirect',
failureRedirect: '/login',
failureFlash: true
})
);
и моя локальная стратегия для входа
passport.use('local-login', new LocalStrategy({
usernameField: 'email',
passwordField: 'password',
passReqToCallback: true
},
function (req, login, password, done) {
User.findOne({$or: [
{'local.email':new RegExp('^'+login+'$', "i") },
{'local.username': new RegExp('^'+login+'$', "i")}
]}, function (error, user) {
if (error)
return done(null, false, req.flash('error', {'error': error, 'login' : login}));
if (!user)
return done(null, false, req.flash('error', {'error': 'No user found.', 'login' : login}));
if (!user.validPassword(password))
return done(null, false, req.flash('error', {'error': 'Oops! Wrong password.', 'login' : login}));
return done(null, user);
});
})
);
I ' Мне жаль, если я пропустил ответ где-то еще здесь, но я прошел через так много разных без везения, и буду признателен за любую помощь :)