我将navbar.ejs设置为部分,以便我不需要再次重写它。每条路线都需要navbar.ejs。我使用护照进行Auth
<% if (!user) { %>
<li><a href="/signup">Signup</a></li>
<li><a href="/login">Login</a></li>
</ul>
<% } else{ %>
<li><a href="/dashboard">Dashboard</a></li>
<li><a><%= user.profile.name %></a></li>
<% } %>
路线示例
app.get('/', function(req, res) {
res.render('home');
}
app.get('/dashboard', isLoggedIn, function(req, res) {
res.render('dashboard', { user: req.user });
}
app.get('/about', function(req, res) {
res.render('about');
}
对于user's object
的路由,因为响应在呈现时工作正常,但其他路由将继续显示
user is not defined
我知道明显的解决方案是在每一条路线中传递user's object
,但这确实是疯了。
想象一下,如果我必须这样做
app.get('/1', function(req, res) {
res.render('/1', {user: req.user});
}
app.get('/2', function(req, res) {
res.render('/2', {user: req.user});
}
app.get('/3', function(req, res) {
res.render('/3', {user: req.user});
}
app.get('/4', function(req, res) {
res.render('/4', {user: req.user});
}
app.get('/5', function(req, res) {
res.render('/5', {user: req.user});
}
如果需要身份验证的路线,我真的不介意通过user's object
,但简单的路线,如家,关于或联系,我觉得不需要传递。< / p>
答案 0 :(得分:0)
如果您不想在每条路线中继续传递用户的对象,那么您必须设置中间件
在护照配置后的某处添加以下代码
app.use(function(req, res, next){
res.locals.user = req.user;
});
然后您不再需要在每个路径中传递用户的对象
app.get('/1', function(req, res) {
res.render('/1');
}
app.get('/2', function(req, res) {
res.render('/2');
}