如何在ejs中获取会话值

ZMa*_*lin 8 session node.js express

我正在使用session(使用express和nodes)创建一个登录模块.当用户登录时,我将用户保存在会话中.

req.session.user= ...
Run Code Online (Sandbox Code Playgroud)

如何在.ejs视图中获取会话值,如:

<label>
            ???<%= req.session.user.username %>
 </label>
Run Code Online (Sandbox Code Playgroud)

但这不起作用.

我可以这样做:

router.get('/home',function(req, res){

    var val = req.session.user;
    res.render('home',{user:val});


});
Run Code Online (Sandbox Code Playgroud)

.ejs:

<p>
            ???<%= user.username %>
</p>
Run Code Online (Sandbox Code Playgroud)

但这太麻烦了.有什么更好的方法呢?

(在php中,我可以使用$ _SESSION来获取视图文件中的值.)

rob*_*lep 20

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

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

app.use(function(req, res, next) {
  res.locals.user = req.session.user;
  next();
});
Run Code Online (Sandbox Code Playgroud)

这将使user所有模板中都有一个变量.

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