2014-11-21 54 views

回答

15

你應該總是在自己的代碼總是使用req.user - 這是重要的,因爲如果你使用req.session.passport.user,你基本上拉動用戶信息從一個會話cookie(可能是過時的)。

最好依靠req.user而不是cookie數據直接取決於您的實施,這些信息可能會過時。

並回答你的問題:如果你登出一個用戶,req.sessionreq.user將不再可用。

+0

'req.session.passport.user'實際上是否從會話本身(而不是會話cookie)提取信息?我可能會誤解,但除非你禁用會話不是'req.user'真的只是映射到'req.session.passport.user'?我看不出兩人會有什麼不同。現在,如果您以某種方式將實際數據存儲在cookie中(而不僅僅是會話ID),然後通過'req.cookies'訪問這些數據,那麼它肯定會過時,但這是完全不同的情況。 – nextgentech 2016-10-02 22:18:22

+0

否 - 'req.session.passport.user'被從會話cookie中拉出(無處)。這是它如何與基於cookie的會話身份驗證一起使用,除非您使用其他表單。 – rdegges 2016-10-07 18:36:17

+0

也許我們正在談論不同的事情,但在使用MemoryStore或基於服務器的會話存儲環境中沒有意義。當使用服務器端會話存儲時,會話cookie(發送到瀏覽器)僅存儲會話ID。所有數據都保留在服務器上。會話的重點是保持數據的可用性並且在給定用戶的服務器上保持最新。會話cookie只允許瀏覽器保持與特定會話的鏈接。通過'req.session'訪問數據將始終包含最新的會話信息。 – nextgentech 2016-10-08 09:55:54