例如,我想在页面顶部显示经过身份验证的用户的名称,因此该名称必须位于我的应用的布局视图中。但是我不想在每个控制器函数中将名称作为变量发送,我想避免这种情况:
如果我想访问索引页面:
res.render('index', {user: req.session.username});
如果我想访问其他页面:
res.render('page', {user: req.session.username});
依旧......
所以我想从我的视图中调用一个函数,该函数返回该用户的名称,类似于rails helpers。
这可能吗?
我尝试了res.locals
app.use(function(req, res, next){
res.locals.user = '';
next();
});
然后当用户通过身份验证时,我使用名称更改res.locals的值,但这只会对下一个呈现的页面工作一次......
答案 0 :(得分:0)
你把它与res.locals关闭了。只需:
app.use(function(req, res, next){
res.locals.user = req.session.username;
next();
});
在会话中间件之后添加此项,并假设您正确设置了身份验证系统,您应该能够从视图中访问用户名。