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

Always pass variable to Express res.render

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

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

每次都提供它很乏味 -- 如果我忘记了,就好像用户没有登录一样。

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

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将未定义。