2015-02-23 48 views
1

我正在閱讀meanjs項目的源代碼以更好地學習JavaScript和MEAN。有一個表達:將用戶傳遞到瀏覽器中meanjs

<!--Embedding The User Object--> 
    <script type="text/javascript"> 
     var user = {{ user | json | safe }}; 
    </script> 

我明白,它在發送用戶記錄作爲JSON對象的瀏覽器,但無法找到谷歌「安全」的過濾器。任何人都可以請我指出正確的方向或解釋這是什麼?

回答

1

是的,用戶對象實際上正在傳遞給瀏覽器,並且它實際上顯示在源代碼中。在實踐中,我部署的應用程序的源代碼有這個(實際數據廣義):

<!--Embedding The User Object--> 
<script type="text/javascript"> 
    var user = {"_id":"123abc456xyzetc","displayName":"First Last","provider":"local","username":"newguy","__v":0,"roles":["admin"],"email":"[email protected]","lastName":"Last","firstName":"First"}; 
</script> 

正如你所看到的,它實際上轉儲用戶信息到源代碼,這是不發展最安全的方式應用程序。如果您在layout.server.view.html文件(var user = {{ user | json | safe }};)中註釋掉或刪除了該行,則無法真正登錄。它將您登錄,然後立即將您踢出。

你會發現,儘管在你的config > passport.js文件中的一些信息被傳遞迴瀏覽器之前取出,開始在各地的14行:

// Deserialize sessions 
passport.deserializeUser(function(id, done) { 
    User.findOne({ 
     _id: id 
    // The following line is removing sensitive data. In theory, you could remove other data using this same line. 
    }, '-salt -password -updated -created', function(err, user) { 
     done(err, user); 
    }); 
}); 

如果你決定刪除其他領域,不過,請注意,這可能會破壞您的應用程序。例如,我刪除了用戶標識,並且我的大部分應用都能正常工作,但它破壞了一些特定的功能(如果我沒有記錯的話,我相信這是文章)。

+0

感謝您的信息,我試圖接受解決方案,但它說我需要分鐘。 15投票,對不起! – 2015-06-03 21:34:40

+0

@AdrianDain我剛剛提出了你的問題(這是一個非常有效的問題,畢竟......我應該已經這樣做了)。現在你應該有足夠的。 :) 很高興我能幫上忙。 – aikorei 2015-06-03 23:00:25

+1

哇!非常感謝你!你不僅讓我完全清楚自己的問題,還讓我能夠最終感謝我從人們那裏得到的幫助! :d – 2015-06-04 23:23:23

相關問題