簡體   English   中英

已登錄的用戶:要發送到瀏覽器的哪些信息?

[英]Logged user: what info to send to the browser?

背景 :我仍在學習使用MEAN堆棧構建Web應用程序。

問題 :我發現以下令人困惑。 假設我有一個用戶登錄(我正在使用Passport.js)。 從Angular中,我可以查詢Node.js服務器來檢索它。 我現在正在做的事情類似於:

app.get('/userLogged',function(req,res){
     res.json({req.user});
});

這對我來說聽起來並不安全。 我可能是新手,但我在許多教程中都看到了這一點。 通過瀏覽器中的console.log ,我可以打印有關用戶的所有信息,包括哈希密碼。 我的猜測是我應該向瀏覽器發送最少的信息集,以過濾掉其余信息。

我的問題 :這是否完全安全,還是我只是向黑客敞開大門?

看一下ViewModel的概念。 它代表您要與系統的外部用戶公開共享的數據。

根據您的情況,可以在內部存儲的數據模型中實現正確的視圖模型。 一個簡單的例子說明了這個概念,那就是為您的user對象創建一個視圖模型,該模型將選擇您想發回的數據:

// This function will return a different version
// of the `user` object having only a `name`
// and an `email` attribute.
var makeViewModel = function (user) {
  return _.pick(user, ['name', 'email']);
}

然后,您將能夠按需構建正確的視圖模型:

app.get('/user',function (req,res){
     res.json(makeViewModel(req.user));
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM