У меня сейчас проблема с passportJS.Я использую шаблон для отображения страниц (EJS).Вход и регистрация всегда на один шаг позади, так как у меня другая навигационная панель, когда пользователь вошел в систему. Как только я нажимаю кнопку подтверждения с правильными учетными данными на странице входа в систему, она не обновляет панель навигации, на которую перенаправляется пользователь.Мне нужно либо обновить страницу, либо щелкнуть другую ссылку в приложении.
passport.use(
new LocalStrategy(
{
usernameField: "email",
passwordField: "password"
},
function(email, password, done) {
knex
.select("*")
.from("users")
.where({ email })
.first()
.then(user => {
if (!user) return done(null, false);
const hash = user.password;
bcrypt.compare(password, hash, function(err, res) {
if (res === true) {
return done(null, user);
} else {
return done(null, false);
}
});
})
.catch(err => {
return done(err);
});
}
)
);
app.post('/login', passport.authenticate(
'local'), function(req, res, next) {
if(req.user.id) {
res.locals.isAuthenticated = req.isAuthenticated();
console.log("===========> working", res.locals.isAuthenticated)
res.locals.user = req.user;
console.log("===========> working", res.locals.user)
res.redirect('/')
} else {
res.redirect('/login')
}
}
);
app.use(function(req, res, next) {
res.locals.isAuthenticated = req.isAuthenticated();
res.locals.user = req.user;
console.log(res.locals.isAuthenticated, res.locals.user)
next();
});
Выше приведен код с локальной стратегией.Два файла console.logs с «======> working» показывают «true» и пользовательский объект с правильными учетными данными и выполняет правильное перенаправление.
Однако вторая функция показывает «false», не определенопока я не обновлюсь.
Есть мысли о том, где может быть проблема?Большое спасибо!