2014-10-17 31 views
1

我正在NodeJS中實現一個Web應用程序,用戶在訪問每個頁面之前需要登錄。NodeJS Passport會話序列化 - 反序列化用戶進入會話?

我使用Passport模塊實現了用戶認證。根據護照指南頁面,我創建了serializeUser反序列化用戶用戶功能在護照配置中,以便使用會話跟蹤。

在deserializeUser功能,我從餅乾,在傳遞給函數的第一個參數的存儲信息,並在用戶表中搜索數據庫中檢索用戶的詳細信息,並把它傳遞給做的功能。

但是我發現在每個請求中都會調用反序列化函數,並查詢數據庫以檢索用戶詳細信息並將其傳遞給完成函數。

我的問題是,無論是常量查詢數據庫(在性能和邏輯上),獲取用戶對象,是正確的做法,還是我已經理解並實現了錯誤的東西。可能做的事情不是真的需要嗎?

+0

是的,這確實是正確的慣例。如果您不想查詢數據庫,則可以將用戶存儲在內存中。但我不會太擔心。 – laggingreflex 2014-10-17 09:03:24

+0

可能重複的[如何正確使用Passport.js?](http://stackoverflow.com/questions/24456015/how-to-properly-use-passport-js) – laggingreflex 2014-10-17 09:03:41

+0

@laggingreflex謝謝你的回答。我也曾想過爲用戶節省內存。但是我懷疑這是否是正確的做法。再次感謝 – mitsos1os 2014-10-17 09:10:05

回答

2

這是正確的行爲是:deserializeUser()將觸發每個請求,如果這需要從您的數據庫加載數據,那麼會發生什麼。通常情況下,這不會成爲問題,因爲負載會非常快,但是如果它有問題,無論如何,您的應用可能會遇到更廣泛的數據庫/網絡問題。

(如果需要,沒有什麼可以阻止你緩存數據)。

相關問題