我根据用户的角色创建了一个动态菜单栏。在服务器端,当用户登录时,我将他们所有允许的页面存储在他们的 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 的效率并不高。
处理这个问题的最佳方法是什么?
最佳答案
您是否包含了如 this answer 中所示的 HTML 文件? ?
假设您正在使用 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/