Паспорт уже содержит все необходимое для входа пользователя в систему и проверки подлинности пользователя на каком-либо маршруте.
Вы правильно определили, что функция req.isAuthenticated()
предоставляется промежуточное ПО для проверки подлинности пользователя в данный момент.
Для работы функции пользователь должен войти в систему с помощью Passport. В вашем маршруте app.post('/login'
убедитесь, что вы аутентифицируете пользователя по паспорту следующим образом:
passport.authenticate('local', { successRedirect: '/', failureRedirect: '/login' }));
В документации по паспорту четко объясняется, как настроить его для аутентификации по имени пользователя и паролю. если ваша текущая конфигурация не работает. Примеры, которые они приводят, уже используют mon goose для извлечения пользователей из базы данных.
req.isAuthenticated()
может затем использоваться в сочетании с оператором if любого маршрута для условного выполнения кода в зависимости от того, зарегистрирован ли пользователь in.
if (req.isAuthenticated()) {
// The user is logged in
} else {
// The user is logged out
}
В качестве альтернативы, вы можете создать простое промежуточное ПО, которое будет разрешать доступ к маршруту, только если пользователь вошел в систему.
function loggedIn(req, res, next) {
if (req.isAuthenticated()) {
next();
} else {
res.redirect('/login');
}
}
Используйте его следующим образом:
app.get('/protectedRoute', loggedIn, (req, res) => {
// The user is logged in otherwise they would have been redirected
})
См. мой репозиторий GitHub для примера полностью работающего express и паспорта. Просто следуйте инструкциям в readme, чтобы запустить его.