【发布时间】:2014-03-29 04:44:15
【问题描述】:
我在 NodeJS 应用程序中使用 Handlebars(使用 express3-handlebars)作为模板,使用 Passport 进行身份验证。一切都很好,但我想知道是否有办法将 Passport 创建的 req.user 对象全局传递给 Handlebars。
所以我的标题部分可能看起来像这样:
<header>
<h1>My Title</h1>
{{#if user}}
<p>Hello {{user.name}}</p>
{{else}}
<p>Please <a href='/login'>Log In</a></p>
{{/if}}
</header>
就目前而言,我必须在每个页面呈现时显式传递用户对象:
app.get('/', function(req, res){
res.render('home', {
page_title: 'welcome',
user: req.user
});
});
这似乎是错误的做法,因为我在每个页面上都需要它,我可以不只设置一次并让所有页面都可以访问它吗?
我无法在实例化 Handlebars 时执行此操作,因为它依赖于使用 Passport 登录的用户,但情况并非总是如此。
创建一个全局“page_options”对象,将其附加并传递给每个渲染是正确的解决方案,还是 Handlebars/Express 有办法处理这个问题?
【问题讨论】:
标签: javascript node.js express handlebars.js