是的,用戶對象實際上正在傳遞給瀏覽器,並且它實際上顯示在源代碼中。在實踐中,我部署的應用程序的源代碼有這個(實際數據廣義):
<!--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);
});
});
如果你決定刪除其他領域,不過,請注意,這可能會破壞您的應用程序。例如,我刪除了用戶標識,並且我的大部分應用都能正常工作,但它破壞了一些特定的功能(如果我沒有記錯的話,我相信這是文章)。
感謝您的信息,我試圖接受解決方案,但它說我需要分鐘。 15投票,對不起! – 2015-06-03 21:34:40
@AdrianDain我剛剛提出了你的問題(這是一個非常有效的問題,畢竟......我應該已經這樣做了)。現在你應該有足夠的。 :) 很高興我能幫上忙。 – aikorei 2015-06-03 23:00:25
哇!非常感謝你!你不僅讓我完全清楚自己的問題,還讓我能夠最終感謝我從人們那裏得到的幫助! :d – 2015-06-04 23:23:23