[英]bootstrappedUser - Jade or EJS to HTML
我一直在做一些關於Mean Stack的指南,現在我陷入了困境。 按照本指南,我創建了一個簡單的身份驗證,可以在其中使用Passport JS登錄。 無論如何,每次頁面刷新時,身份驗證都會重新啟動(客戶端不再能夠識別它)。
由於這是在指南中可能發生的,我們將要對其進行修復,因此指南表示以下內容。 1.創建一個Jade文件並將其插入:
if !!bootstrappedUser
script.
window.bootstrappedUserObject = !{JSON.stringify(bootstrappedUser)}
我已經在我的html文件中嘗試過此操作,但是它不起作用:
<script type='text/javascript'>
if (bootstrappedUser != "undefined" ){
window.bootstrappedUserObject = JSON.stringify(bootstrappedUser);
}
</script>
收到錯誤: Uncaught ReferenceError: bootstrappedUser is not defined
即使我在后端js文件中創建了變量並將req.user分配給我,也未定義bootstrappedUser。
我想將此文件包含在主布局中(index.html)。 問題是我沒有將Jade用作模板引擎,而是使用純HTML,而且我不知道如何在此將代碼轉換為index.html中的簡單HTML。
可以看出,此語句僅在用戶單擊登錄按鈕時才初始化。 有沒有人有任何想法或解決方案,如何用純HTML編寫上述代碼。
我瀏覽了StackOverflow,發現了幾乎類似的問題,但還不夠相似。 在此先感謝Aleksandar
bootstrappedUser
是服務器端代碼傳遞給Jade編譯器的變量,該變量在編譯時將其注入HTML。 如果您打算自己編寫HTML,則不能從服務器端代碼中注入變量,這顯然是因為HTML只是靜態標記。 您可能必須自己通過Ajax或其他方式在服務器端從客戶端獲取該變量。
通過Angular控制器,我們說什么?
您可以先在服務器上定義一個提供所需變量的路由
app.get('/bootstrappedUser', function(req, res){
if(req.user)
res.json(req.user);
else
res.status(401).end();
});
然后在客戶端angular上,您可以執行http請求並獲取該變量
$http.get('/bootstrappedUser')
.success(function(data, status, headers, config) {
$scope.bootstrappedUser = data;
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.