Passport.js - 隐式地将{user:req.user}传递给模板?

Sah*_*bov 8 node.js express passport.js

现在使用Passport.js和Express进行多个项目,我注意到自己一遍又一遍地这样做,即{ user: req.user }明确指定我的Express路线.偶尔我会忘记传递它,突然间用户甚至不再登录了.

如何在路由中传递user 变量而不必为此类路由显式写入?

app.get = function(req, res, next) {
    res.render('home', {
        title: 'Home',
        user: req.user
    });
};
Run Code Online (Sandbox Code Playgroud)

我认为Everyauth有这样的Express帮助,但是Passport.js呢?

rob*_*lep 31

你可以使用一个简单的中间件:

app.use(function(req, res, next) {
  res.locals.user = req.user;
  next();
});
Run Code Online (Sandbox Code Playgroud)

这将使user所有模板中的变量可用,前提是req.user已填充.确保在声明中间件之后passport.session但在任何路由之前声明该中间件.