始终将变量传递给Express res.render

时间:2015-11-25 23:10:15

标签: node.js express passport.js

默认情况下是否可以将某些变量始终传递给res.render

更具体地说,我使用的passport中间件与当前用户一起填充req.user。我需要在我的网站的每个页面上访问它。

每次提供它都很乏味 - 如果我忘了,似乎用户没有登录。

1 个答案:

答案 0 :(得分:4)

一个简单的解决方案是创建自己的中间件:

function userView(req, res, next) {
    res.locals.user = req.user;
    next();
}

//...

app.use(passport.initialize());
app.use(passport.session());
//...
app.use(userView);

对于每个请求,这会填充一个局部变量user,然后该变量可供稍后在链中呈现的视图访问。在护照之后激活此中间件,或req.user未定义。