我正在使用Handlebars(使用express3-handlebars)模板和Passport進行NodeJS應用程序中的身份驗證。所有工作都很好,但我想知道是否有辦法將Passport創建的req.user對象全局傳遞給Handlebars。Express&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有辦法處理這個問題?
太棒了!我沒有想到這個功能可能是快速配置。非常感謝。 – lewis
嘿,我正在使用Express 4.x,此代碼不適用於我。我認爲他們刪除了4.x中的app.config()。有關如何在Express 4.x上實現這一點的任何想法? – codeinprogress
你說得對,'configure'在Express 4中被刪除了!我更新了(但未經測試)上面的代碼,所以您應該能夠在其他路由邏輯之前使用它。 – ZachRabbit