2012-05-17 29 views
0

這實質上是這裏問題的延續:Nodejs Passport display username在ExpressJS/PassportJS/Jade應用中將變量傳遞到JavaScript

app.get('/hello', function(req, res) { 
    res.render('index.jade', { name: req.user.username }); 
}); 

所以用戶通過PassportJS登錄,並進入index.jade,其中包含了身體,這將通過req.user.username值替換#{name}

問題:是否可以在index.jade的JavaScript中使用req.user.username的值?我試圖將它的值賦給一個變量,但它不起作用。

我一直在使用帶有#{name}一個隱藏的輸入作爲值的竅門:

input(type='hidden', id='variableName', value='#{name}') 

然後使用JavaScript可以訪問此值:

$("#variableName").val() 

這工作。但它是否有像安全問題一樣的潛在缺點?什麼是正確的方法來做到這一點?

回答

2

您有幾個選項。其中之一是你做了什麼,並把價值放在你的html中。你也可以通過這樣做來解決它:

script 
    window.name = #{name}; 

這將創建一個內聯腳本來設置變量。你有另一種選擇是使用ajax。這意味着您可能需要製作額外的路線才能回覆該請求。

+0

這些「竅門」,例如輸入(type ='hidden',id ='variableName',value ='#{name}'),導致問題進一步惡化?或者他們完全沒問題?謝謝回覆。 – Legendre

+0

只要您不將敏感數據放入其中,就可以。 – Pickels

+0

感謝您的解釋。 :) – Legendre