node.js - 如何使用 Node.js 后端访问 EJS 模板中的 session 数据?

标签 node.js express ejs node-modules

我根据用户的角色创建了一个动态菜单栏。在服务器端,当用户登录时,我将他们所有允许的页面存储在他们的 session 中。

现在,我有 15 个模板。我在每个页面上都包含了 menubar.html 文件。我想在 menubar.html 中使用 session 数据,而不必每次都显式传递它。

我尝试过以下代码:

app.get('/home',function(req,res)){
  res.render('home',{menu : req.session.menubar})
}
app.get('/contact',function(req,res)){
  res.render('contact',{menu : req.session.menubar})
}    

在上面的代码中,我需要在每个页面上传递 session 数据。如果我有 50 个 html 模板,那么在每个路由中传递 session 的效率并不高。

处理这个问题的最佳方法是什么?

最佳答案

  1. 您是否包含了如 this answer 中所示的 HTML 文件? ?

  2. 假设您正在使用 express-session ,您可能还需要设置中间件以将 session 信息分配给响应 (res),如 this answer 所示.

app.js:

app.use(session({
  secret: "sosecret",
  saveUninitialized: false,
  resave: false
}));

// middleware to make 'user' available to all templates
app.use(function(req, res, next) {
  res.locals.user = req.session.user;
  next();
});

然后尝试引用 res.locals.user 而不是请求对象。

关于node.js - 如何使用 Node.js 后端访问 EJS 模板中的 session 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47766181/

相关文章:

angularjs - 使用nodejs按名称从集合中检索对象

node.js - PubSub REST 订阅拉取未返回所有消息

node.js - 使用 Mongoose 和 Node.Js 防止重复条目

javascript - Express JS 不发送 JSON 来响应 post 请求

node.js - select_tag 未定义

javascript - Node.js 解析 JSON

javascript - bcrypt-nodejs 抛出的“不正确的参数” - Passport

javascript - Parse.com 云代码 : Fast Way of Creating Pointers than Object Queries/Manual

node.js - 在 EJS 中将变量呈现为 HTML

node.js - 如何更新在 ejs + mongoose 中具有多个值的表单?