我有多条路线,分成不同的文件(我的应用程序包含不同的"模块",我在不同的文件夹中维护。对于每个文件夹,都有一个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状态传递给视图(参见示例)。
答案 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了解详情