如何在ejs中获取会话值

时间:2016-05-12 10:10:04

标签: node.js session express

我正在使用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获取视图文件中的值。)

1 个答案:

答案 0 :(得分:15)

您可以使用res.locals向所有模板公开特定数据。

在您的情况下,您可以将以下中间件添加到Express:

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

这会在所有模板中提供user变量。

您确实需要确保在设置 req.session之后添加该中间件(通常在express-session添加到中间件链之后)。< / p>