超級簡單的問題,我有麻煩纏繞我的頭。關於nodejs(和Passport中間件)會話的困惑
與nodejs一起使用會話時,會話是否存儲在用戶瀏覽器中?還是會話存儲在服務器上?
例如,如果我正在使用express-session或passport.session(),這些會話cookie在哪裏存儲?
超級簡單的問題,我有麻煩纏繞我的頭。關於nodejs(和Passport中間件)會話的困惑
與nodejs一起使用會話時,會話是否存儲在用戶瀏覽器中?還是會話存儲在服務器上?
例如,如果我正在使用express-session或passport.session(),這些會話cookie在哪裏存儲?
的fine manual狀態:
注意會話數據沒有在cookie本身,只是會話ID保存。會話數據存儲在服務器端。
express-session
會在用戶使用瀏覽器(將其存儲),它包含一個唯一的會話ID。數據本身存儲在服務器上(取決於您使用的是哪個會話存儲,這可以在內存中,Redis,MongoDB等)。
Cookie中的會話ID僅用作查找會話存儲中實際數據的密鑰。
正如@robertklep所提到的,會話(以您使用它們的方式)存儲在客戶端,但僅包含會話ID。當您的請求到達Web服務器時,它會查找會話ID以從某種數據庫/緩存中獲取帳戶,然後在剩餘的請求生命週期中使用它。
如果你有興趣學習更多關於這一點,你可能想看看這個截屏我剛纔這正好覆蓋由餅乾是如何工作的,以及爲什麼 - 以及如何安全地存儲它們:此外,如果您希望構建不使用「典型」服務器端會話的網站,並且可以與現代客戶端前端Web框架(如Angular.js/React.js /等等,您可能需要調查JSON Web令牌(JWT)。這些令牌允許您創建不需要在服務器上的數據庫中查找「啞巴」餅乾,幾乎可以大大加快你的web應用程序/ API服務:https://stormpath.com/blog/build-secure-user-interfaces-using-jwts/
希望這有助於!
史詩!我會盡我所能接受。現在我只需要弄清楚如何將護照掛接到MongoDB,這應該很簡單!謝謝! – David