Express Passport.js:req.user VERSUS req.session.passport.user

Ale*_*lls 12 node.js express passport.js

根据这篇文章

http://toon.io/understanding-passportjs-authentication-flow/

看起来好像PassportJS/Express将登录用户存储在两个地方

req.user
Run Code Online (Sandbox Code Playgroud)

req.session.passport.user
Run Code Online (Sandbox Code Playgroud)

为什么两个?我应该使用哪一个?当我使用护照注销时,是否会销毁req.user和req.session.passport.user?

rde*_*ges 18

你应该总是,总是req.user自己的代码-这是重要的,因为如果你使用req.session.passport.user,你基本上拉动用户信息从一个会话cookie(可能是过时的)的.

最好依赖于req.usercookie数据而不是直接依赖于您的实现,这些信息可能已经过时.

而要回答你的问题:如果你注销用户,都req.sessionreq.user将不再可用.

  • 也许我们在谈论不同的事情,但这在使用 MemoryStore 或基于服务器的会话存储的上下文中没有意义。使用服务器端会话存储时,会话 cookie(发送到浏览器)仅存储会话 ID。所有数据都保留在服务器上。会话的全部意义在于为给定用户在服务器上保持数据可用和最新。会话 cookie 只允许浏览器保持与特定会话的链接。通过 req.session 访问数据将始终包含最新的会话信息。 (2认同)