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

4

是否可以默认传递某些变量到res.render中?

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

每次都提供它很繁琐,如果我忘记了,看起来就像用户没有登录。


你能展示一些代码并更好地解释一下出了什么问题吗? - Rodmentou
1个回答

5
一个简单的解决方案是创建自己的中间件:
function userView(req, res, next) {
    res.locals.user = req.user;
    next();
}

//...

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

对于每个请求,该中间件会填充一个本地变量user,然后在后续的视图中访问该变量。请在passport中间件之后激活此中间件,否则req.user将未定义。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接