node.js - 如何在ejs中获取session值

标签 node.js session express

我正在使用 session (使用 express 和 Node )制作一个登录模块。 当用户登录后,我将用户保存在 session 中。

req.session.user= ...

如何在 .ejs View 中获取 session 值,例如:

<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 来获取 View 文件中的值。)

最佳答案

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

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

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

这将使 user 变量在您的所有模板中可用。

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

关于node.js - 如何在ejs中获取session值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37183766/

相关文章:

javascript - Express 的 res.end() 是如何工作的?

node.js - 为什么 Node.js Express 框架在设置 session 变量时不使用回调?

python - Django session 删除影响另一个 Django 应用程序

node.js - 从 node.js session 获取信息与从数据库获取信息

node.js - 如何在Express 3.0.0rc2中使用layout.jade

javascript - 使用nodejs和angularjs更新mongodb

javascript - 将 sequelize-cli 配置更改为动态配置时出错

javascript - Node.js、Handlebars 和 Express 的模板继承

node.js - 仅在用户( Mongoose )内设置字段 'unique'

javascript - 用户 session 未在 Node.js 服务器上更新