Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何将用户数据传递到所有视图中?_Node.js_Express_Pug_Passport.js - Fatal编程技术网

Node.js 如何将用户数据传递到所有视图中?

Node.js 如何将用户数据传递到所有视图中?,node.js,express,pug,passport.js,Node.js,Express,Pug,Passport.js,我无法确定如何最好地将用户详细信息(电子邮件、姓名等)传递给“登录”视图(我使用的是jade) 我正在使用passport,在我的视图中可以访问session.passport.user,但只有用户的id保存在这里,而且我被告知在会话cookie中本地保留它是不好的安全做法 我不想在需要用户的每个控制器上都将用户对象传递到res.render 这就是我在本地设置会话的方式 app.use(function (req, res, next) { res.locals.session = req

我无法确定如何最好地将用户详细信息(电子邮件、姓名等)传递给“登录”视图(我使用的是jade)

我正在使用passport,在我的视图中可以访问
session.passport.user
,但只有用户的id保存在这里,而且我被告知在会话cookie中本地保留它是不好的安全做法

我不想在需要用户的每个控制器上都将用户对象传递到
res.render

这就是我在本地设置会话的方式

app.use(function (req, res, next) {
  res.locals.session = req.session;
  next(null, req, res);
});
这是我用来检查用户是否登录的中间件

function isLoggedIn(req, res, next) {
  // if user is authenticated in the session, carry on 
  if (req.isAuthenticated()) {
    return next();
  }

  // if they aren't redirect them to the home page
  res.redirect('/');
}

我已经看过动态助手,但我使用的是express v3.0.0rc4。

为此,您可以使用
res.locals
。您在该对象中放置的任何内容都将在视图上下文中可用(当然,除非它被稍后的上下文覆盖)。因此,例如,您可以修改
isLoggedIn
中间件,从而:

function isLoggedIn(req, res, next) {
  // if user is authenticated in the session, carry on 
  if (req.isAuthenticated()) {
    // obviouisly, don't use static strings...
    // get these values from your authentication
    // mmechanism
    res.locals.user = 'username';
    res.locals.userEmail = 'user@domain.com';
    return next();
  }

  // if they aren't redirect them to the home page
  res.redirect('/');
}

由于您使用的是
passport
,因此req应具有
.user