Kau*_*ana 2 ejs node.js express node-modules
我根据用户的角色创建了一个动态菜单栏。在服务器端,当用户登录时,我将他们所有允许的页面存储在他们的会话中。
现在,我有 15 个模板。menubar.html我在每一页上都包含了文件。我想使用会话数据,而menubar.html不必每次都显式传递它。
我尝试过以下代码:
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})
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,我需要在每个页面上传递会话数据。如果我有 50 个 html 模板,那么在每个路由中传递会话的效率并不高。
处理这个问题的最佳方法是什么?
您是否包含了此答案中所示的 HTML 文件?
假设您使用的是express-session,您可能还需要设置中间件来将会话信息分配给响应( ) ,如本答案res所示。
应用程序.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();
});
Run Code Online (Sandbox Code Playgroud)
然后尝试引用res.locals.user而不是请求对象。
| 归档时间: |
|
| 查看次数: |
7437 次 |
| 最近记录: |