我正在尝试学习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。