Node.js 我希望只有登录的用户才能看到确定的页面

Node.js 我希望只有登录的用户才能看到确定的页面,node.js,express,ejs,Node.js,Express,Ejs,大家好,我正在学习使用expressjs框架的node.js。现在我想创建一个简单的网站,有两个页面(登录页面和登录页面)。通过此练习,我的主要目标是仅授权已登录用户查看已登录页面。 我希望防止未注册的用户可以使用www.mysite.com/logged 所以在app.js中我添加了这个 app.get('/logged', routes.logged); 然后在index.js(它位于./routes文件夹)中,我写了这个 exports.logged = function(req, re

大家好,我正在学习使用expressjs框架的node.js。现在我想创建一个简单的网站,有两个页面(登录页面和登录页面)。通过此练习,我的主要目标是仅授权已登录用户查看已登录页面。
我希望防止未注册的用户可以使用
www.mysite.com/logged

所以在app.js中我添加了这个

app.get('/logged', routes.logged);
然后在index.js(它位于./routes文件夹)中,我写了这个

exports.logged = function(req, res) {
if(req.session.isLogged) {
        res.status(200);
        res.render('logged', {Title: req.session.name});
} else {
    res.status(403);
    res.render('403');
}
}
但是,当我试图通过
www.example.com/logged
访问日志页面时,我总是收到
500错误内部服务器错误

我收到的错误是:

Express
500 Error: Failed to lookup view "TypeError: Cannot read property 'commonUserId' of undefined" in views directory "C:\Users\Fabio\Desktop\SitoStatistica\views"
at Function.app.render (C:\Users\Fabio\Desktop\SitoStatistica\node_modules\express\lib\application.js:493:17)
at ServerResponse.res.render (C:\Users\Fabio\Desktop\SitoStatistica\node_modules\express\lib\response.js:798:7)
at Object.handle (C:\Users\Fabio\Desktop\SitoStatistica\app.js:32:6)
at next (C:\Users\Fabio\Desktop\SitoStatistica\node_modules\express\node_modules\connect\lib\proto.js:188:17)
at next (C:\Users\Fabio\Desktop\SitoStatistica\node_modules\express\node_modules\connect\lib\proto.js:190:11)
at next (C:\Users\Fabio\Desktop\SitoStatistica\node_modules\express\node_modules\connect\lib\proto.js:190:11)
at pass (C:\Users\Fabio\Desktop\SitoStatistica\node_modules\express\lib\router\index.js:110:24)
at nextRoute (C:\Users\Fabio\Desktop\SitoStatistica\node_modules\express\lib\router\index.js:100:7)
at callbacks (C:\Users\Fabio\Desktop\SitoStatistica\node_modules\express\lib\router\index.js:167:11)
at callbacks (C:\Users\Fabio\Desktop\SitoStatistica\node_modules\express\lib\router\index.js:170:9)

@pero

实现您自己的身份验证系统不是一个好主意

对于NodeJS身份验证,您应该查看

然后,验证变得非常简单:

app.post('/login', passport.authenticate('local', { successRedirect: '/',
                                                failureRedirect: '/login' }));
然后


是否从节点进程获取堆栈跟踪?
app.get('/logged', function (req, res, next) {
    if (req.isAuthenticated()) {
        return res.redirect('/login');
    }
    return res.render('login');
});