如果用户未登录,Node.js将重定向到登录状态

Egi*_*idi 1 javascript node.js express

我正在使用node-login模块登录我的网站.好的,在用户登录后我渲染了我的dashboard.html网站:

app.get('/', function(req, res){
// check if the user's credentials are saved in a cookie //
    if (req.cookies.user == undefined || req.cookies.pass == undefined){
        res.render(req.locale+'/login', { title: 'Hello - Please Login To Your Account' });
    }   else{
// attempt automatic login //
        AM.autoLogin(req.cookies.user, req.cookies.pass, function(o){
            if (o != null){
                req.session.user = o;
                res.redirect('/home');
            }   else{
                res.render('/login', { title: 'Hello - Please Login To Your Account' });
            }
        });
    }
});
Run Code Online (Sandbox Code Playgroud)

之后,所有其他html网站都在dashboard.html中链接,因此没有其他app.get方法被调用.

如果用户尝试导航到http://www.example.com/news.html(或任何其他不是登录页面的html页面),如果用户未登录,我需要将他重定向到登录页.

我首先想到的是这样的,但我不知道这是否可能:

app.get('I-don't-know-what-to-insert-here', function(req, res) {
    if (req.session.user == null){
// if user is not logged-in redirect back to login page //
        res.redirect('/');
    }   else{
        res.redirect('redirect-here-to-the-requested-html-page')  
    }
});
Run Code Online (Sandbox Code Playgroud)

问候,

SLa*_*aks 8

您想编写中间件,而不是路由处理程序:

app.use(function(req, res, next) {
    if (req.session.user == null){
// if user is not logged-in redirect back to login page //
        res.redirect('/');
    }   else{
        next();
    }
});
Run Code Online (Sandbox Code Playgroud)

  • 它看起来像一个无限循环。 (2认同)