Не удается просмотреть, даже если все остальное найдено - PullRequest
0 голосов
/ 06 февраля 2019

Я создаю простое 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 что-то напутала?Но как и почему он сказал бы Не удалось найти , я не совсем понимаю.

1 Ответ

0 голосов
/ 06 февраля 2019

Итак, после небольшой отладки я обнаружил, что это всего лишь простая ошибка.

 app.get('/admin', isLoggedIn ,function (req, res) {
        res.render('/admin', {
            title: req.user,
            message: 'Admin page'
        });
    });

res.render('/admin'); пришлось изменить на res.render('admin');

Итак,Я могу заключить, что res.render() должен искать по имени.

Что касается app.get('/admin'), то задает маршрут, проще говоря

...