我正在使用session(使用express和nodes)创建登录模块。 当用户登录后,我将用户保存在会话中。
req.session.user= ...
如何在.ejs视图中获取会话值,如:
<label>
您好!<%= req.session.user.username %>
</label>
但这不起作用。
我可以这样做:
router.get('/home',function(req, res){
var val = req.session.user;
res.render('home',{user:val});
});
.ejs:
<p>
您好!<%= user.username %>
</p>
但这太麻烦了。 有什么更好的方法呢?
(在php中,我可以使用$ _SESSION获取视图文件中的值。)
答案 0 :(得分:15)
您可以使用res.locals
向所有模板公开特定数据。
在您的情况下,您可以将以下中间件添加到Express:
app.use(function(req, res, next) {
res.locals.user = req.session.user;
next();
});
这会在所有模板中提供user
变量。
您确实需要确保在设置 req.session
之后添加该中间件(通常在express-session
添加到中间件链之后)。< / p>