Passport.js - 将{user:req.user}传递给模板? [英] Passport.js - passing {user: req.user} to template implicitly?

查看:92
本文介绍了Passport.js - 将{user:req.user}传递给模板?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

现在使用Passport.js和Express为多个项目,我注意到我一遍又一遍地这样做,即为我明确指定了 {user:req.user} 快速路线。呃,我忘了通过它,突然就是用户甚至没有登录了。



如何传递一个用户 变量,而不必像这样的每个路由都明确地写出来。

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

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

解决方案

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

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

这将使一个用户所有模板,只要 req.user 被填充。确保您在之后声明中间件,声明 passport.session 中间件,但在任何路由之前。


Using Passport.js and Express for multiple projects now, I have noticed myself doing this over and over again, namely specifying { user: req.user } explicitly for my Express routes. Ocassionally I forget to pass it, and suddenly it's like user is not even logged in anymore.

How can I pass a user variable in my routes without having to explicitly write it for each route like this?

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

I think everyauth has such Express helper, but does Passport.js?

解决方案

You could use a simple middleware for that:

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

This will make a user variable available in all templates, provided that req.user is populated. Make sure that you declare that middleware after you declare the passport.session middleware, but before any routes.

这篇关于Passport.js - 将{user:req.user}传递给模板?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆