很抱歉标题措辞不当,我不确定用什么最好的方式来表达,我认为用代码解释会更容易。假设我有以下内容:
router.get('/chest', (req, res)=>res.render('muscles/chest/chest', {login: req.isAuthenticated(), user: req.user}));
router.get('/abs', (req, res)=>res.render('muscles/abs/abs', {login: req.isAuthenticated(), user: req.user}));
router.get('/biceps', (req, res)=>res.render('muscles/biceps/biceps', {login: req.isAuthenticated(), user: req.user}));
router.get('/frontdeltoids', (req, res)=>res.render('muscles/frontdeltoids/frontdeltoids', {login: req.isAuthenticated(), user: req.user}));
router.get('/quadriceps', (req, res)=>res.render('muscles/quadriceps/quadriceps', {login: req.isAuthenticated(), user: req.user}));
在我的layout.ejs文件中,我有:
<% if (login) { %>
<li class="nav-item">
<a class="nav-link" href="/users/profile/<%= user.id%>"><span class="fas fa-user"></span> Profile</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/users/logout"><span class="fas fa-sign-in-alt"></span> Logout</a>
</li>
有没有比必须添加";login:req.isAuthenticated((,user:req.user"我的layout.ejs文件不会给我一个未定义的登录错误?
我想到的第一个解决方案是实现一个中间件;全球化";您的局部变量。
这样的东西可以解决这个问题:
router.use(function(req, res, next){
res.locals.login = req.isAuthenticated();
res.locals.user = req.user;
next();
});
// The rest goes here
如果我不知怎么误解了你,请纠正我。
更新:请查看@ikhvjs的评论(谢谢(。