如何为大多数页面设置限制

时间:2015-11-27 23:35:32

标签: node.js express

我有这段代码在Node.js文件中加载admin页面。

app.get('/admin',function(req,res){
    if(req.session.loggedIn == undefined)
    {
        res.writeHead(301, {
            Location: '/login'
        });
        res.end();
    }
    else
    {
         res.send("ADMIN PAGE");
    }
});

我将有几个页面像这样路由,如果用户登录,我会检查会话。如果没有,我将重定向到登录页面,如果用户已登录,我会显示该页面。

我可以将一些限制添加到所有页面(当然除了登录页面),而不重复代码,以避免在将来更改所有路由时,我必须添加新的限制吗?

也许我可以正确使用正则表达式?但是,我如何决定在每条规则中做什么?

1 个答案:

答案 0 :(得分:1)

只需创建一个中间件功能,并将其包含在您需要的任何位置。例如:

function requireLoggedIn(req, res, next) {
  if (!req.session || req.session.loggedIn === undefined) {
    res.writeHead(301, { 'Location': '/login' });
    res.end();
    return;
  }
  next();
}

然后只在路线的任何地方使用它,例如:

app.get('/admin', requireLoggedIn, function(req, res) {
  res.send('ADMIN PAGE');
});

或者您可以在单独的路由器中使用它,将其传递给app.use()