NodeJS 使用 Passport 进行用户身份验证并使用 Handlebars 作为模板引擎,我插入了一些中间件,以确保req.user
在所有应用程序的视图中都可用:{{ user }}
app.use(function(req, res, next) {
res.locals.user = req.user;
next();
});
这在主布局和其他所有视图中都可以完美地工作,但是当我处于局部视图时,似乎 {{ user }} 不可用。
在主布局中,我可以检查用户是否存在,如果存在,则显示某些菜单项:
{{#if user}}
...
{{/if}}
在我的索引中,{{ user }}
仍然可用的地方,我这样称呼部分:
{{#if posts}}
{{#each posts as |post|}}
{{> post post }}
{{/each}}
{{/if}}
注意 - 我添加posts as |post|
是因为我认为我可以将post
和传递user
给局部视图,但它只允许一个参数
在局部视图中,永远不会呈现以下代码:
{{#if user}}
<a href="#" class="vote-up" data-id="{{ id }}"><img src="../../assets/icons/good.png" alt="discUp" class="discup"></a>
{{/if}}
我已经尝试过将用户发送到部分的不同方式——我觉得这是一种可以接受的(尽管可能不是理想的)处理方式。不过,不确定我在 Handlebars 文档中遗漏了什么。我以为 {{#with}} 是票。