Я создаю простое passport-local
приложение для входа.
Кажется, что все работает нормально, пока я не войду в систему.
В частности, мне нужно получить доступ к /admin
просмотр, который виден только после успешного входа в систему.
это мой routs / index.js файл:
module.exports = function (app, passport) {
// GET The HOME-page
app.get('/', function(req, res, next) {
res.render('index', {
title: 'Index',
message: 'Index Page'
});
});
// GET The LOGIN-page
app.get('/login', function(req, res, next) {
res.render('login', {
title: 'Login',
message: 'Login Page',
flash_message: req.flash('loginMessage')
});
});
// Process the login form
app.post('/login', passport.authenticate('local', {
successRedirect: '/admin',
failureRedirect: '/login',
failureFlash: true
}),
function (req, res) {
console.log('Hi');
res.redirect('/');
});
app.get('/admin', isLoggedIn, function (req, res) {
res.render('/admin', { <-ERROR IS POINTED HERE
title: 'Admin',
message: 'Admin page'
});
});
app.get('/logout', function (req, res) {
req.logout();
res.redirect('/');
});
};
// route middleware
function isLoggedIn(req, res, next) {
if (req.isAuthenticated()) { return next(); } <-ERROR IS POINTED HERE
res.status(403).send('[403] Forbidden');
}
I console.logged
, что пропускает req.isAuthenticated
, и пропускает true, поэтому должно возвращаться next()
.страница, конечно, дает код 500, поэтому 403. не вызывается.
Я изменил маршрут администратора на другую страницу без isLoggedIn
, и это сработало, поэтому моя структура папок настроена правильно.Таким образом, функция isLoggedIn что-то напутала?Но как и почему он сказал бы Не удалось найти , я не совсем понимаю.