【问题标题】:Passport.js - passing {user: req.user} to template implicitly?Passport.js - 将 {user: req.user} 隐式传递给模板?
【发布时间】:2014-01-21 15:10:51
【问题描述】:

现在将 Passport.js 和 Express 用于多个项目,我注意到自己一遍又一遍地这样做,即为我的 Express 路由明确指定 { user: req.user }。偶尔忘记传了,突然感觉用户连登录都没有了。

如何在我的路由中传递user变量,而不必像这样为每条路由显式编写它?

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

我认为everyauth 有这样的 Express 助手,但是 Passport.js 有吗?

【问题讨论】:

    标签: node.js express passport.js


    【解决方案1】:

    您可以为此使用一个简单的中间件:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-24
      • 2016-05-22
      • 2021-04-22
      • 2017-12-31
      • 2017-12-25
      • 2019-02-15
      • 2017-11-10
      • 1970-01-01
      相关资源
      最近更新 更多