困惑于nodejs(和Passport中间件)会话

超级简单的问题,我有麻烦缠绕我的头。

与nodejs使用会话时,会话存储在用户浏览器中吗? 还是会话存储在服务器上?

例如,如果我正在使用express-session或passport.session(),这些会话cookie在哪里存储?

精细手册指出:

注意会话数据不会保存在cookie本身,只是会话ID。 会话数据存储在服务器端。

express-session发送一个cookie到浏览器(存储它),其中包含一个唯一的会话ID。 数据本身存储在服务器上(取决于您使用的是哪个会话存储,可以在内存中,Redis,MongoDB等)。

Cookie中的会话ID仅用作查找会话存储中的实际数据的关键。

正如@robertklep所提到的那样,会话(以您使用它们的方式)存储在客户端上,但仅包含一个会话ID。 当您的请求到达Web服务器时,它会查找会话ID以从某种数据库/caching中获取帐户,然后在请求生命周期的其余部分使用该帐户。

如果您有兴趣了解更多相关信息,您可能需要查看一下我之前制作的截屏video,其中详细介绍 Cookie 如何工作,以及为什么 – 以及如何安全地存储这些video: https:// www。 youtube.com/watch?v=yvviEA1pOXw

此外,如果您正在寻找一个不使用“典型”服务器端会话的网站,并且可以使用像Angular.js / React.js /等现代客户端前端Web框架,想调查JSON Web Tokens(JWT)。 这些令牌允许您创build不需要在服务器上进行数据库查询的“愚蠢”cookie,并且可以显着加速您的Web应用/ API服务: https : //stormpath.com/blog/build-secure-user γ-接口-使用-jwts /

希望这可以帮助!