Node Express auth状态

时间:2015-06-03 16:02:58

标签: node.js authentication express

我有多条路线,分成不同的文件(我的应用程序包含不同的"模块",我在不同的文件夹中维护。对于每个文件夹,都有一个index.js文件,我在其中管理每个模块的路由,我在app.js文件中要求这些。) 对于每个路由,我将要求检查auth,并将loggedIn状态传递给每个页面的标题:

//Default variables for the ejs template 
var options = { 
    loggedIn: true
}; 

res.render("home/home", options);  

如果登录状态为true,则会显示用户的姓名。如果没有,则显示登录/注册标签。

集中这个的最佳方法是什么,以便我不需要在每个index.js(路由)文件中都要求auth脚本?
我需要能够通过options对象将auth状态传递给视图(参见示例)。

2 个答案:

答案 0 :(得分:0)

在您的身份验证模块中,使用中间件功能。该函数可以检查并存储res.locals.loggedIn,它将可用于最终将呈现的任何视图。只需确保app.use调用在您的其他路由之前执行,它将正常工作。

app.use(function auth(req, res, next) {
  res.locals.loggedIn = true; // compute proper value here
  next();
});

答案 1 :(得分:0)

根据我的理解,你需要为每个请求执行此操作。一个常见的事情是将其添加为中间件,以便所有请求都能获得此功能。

例如:

  var http = require('http');
  var connect = require('connect');
  var app = connect();
  app.use(function(req, res) {
     res.end('Hello!');
  });

  http.createServer(app).listen(3000)

现在每个请求都会打印Hello。您可以将其作为模块提取并在项目中重复使用。查看here了解详情