我正在尝试学习Express,并且我来自php背景,我试图实现的目标是将身份验证的用户设置为res.locals变量,以便可以在eJS中轻松使用身份验证的用户变量。

我的app.js看起来类似于

initialize passport etc
///////////////////////////////////////////
//middleware to pass authuser to req locals
app.use(function (req, res, next) {
  res.locals.authUser = req.user;
  next();
});


router.js

router.get('/',function(req,res){
    console.log(res.locals.authUser);
    res.render('index');
});


index.ejs视图
<%= authUser.first_name %>

在ejs中,未解析first_name,但是如果我放置此<%= authUser %>,它将呈现

{
  is_admin: true,
  _id: 5d8cb3702e35aa2f5cbaabf8,
  first_name: 'ruban',
  last_name: 'shah',
  username: 'admin',
  email: '[email protected]',
  password: 'xxxxxx'
}


这意味着authUser是对象,但不打印authUser.first_name是ejs

但奇怪的是它呈现authUser.username

最佳答案

我最好的猜测是,当您在用户登录后将用户添加到会话中时,不是在添加用户对象,而是在添加JSON String。

09-20 18:25