即使找到其他所有内容,也难以查找视图

时间:2019-02-05 21:06:35

标签: express routing passport.js

我正在创建一个简单的passport-local登录应用。

在我成功登录之前,一切似乎都可以正常工作。

具体地说,我需要访问/admin视图,该视图仅在成功登录后才能看到。

这是我的 routes / index.js文件:

module.exports =函数(应用,护照){

    // 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');
}

console.logged req.isAuthenticated省略了什么,但它省略了true,因此它应该返回next()。该页面当然会提供500个代码,因此不会调用403。

我将管理路由更改为没有isLoggedIn的另一页,并且可以正常工作,因此我的文件夹结构设置正确。 因此, isLoggedIn 函数搞砸了吗?但是,为什么,为什么会显示无法查找,我不太了解。

1 个答案:

答案 0 :(得分:0)

因此,在进行一些调试之后,我发现这只是一个简单的/错误。

 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')设置路线,简而言之