对nodejs(和Passport中间件)会话感到困惑

时间:2015-06-18 17:46:35

标签: node.js express passport.js

超级简单的问题,我无法绕过头脑。

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

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

2 个答案:

答案 0 :(得分:1)

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

如果您有兴趣了解有关此内容的更多信息,可能需要查看我之前提到的这个截屏视频,其中包含了 Cookie的工作原理,以及为什么 - 以及 - 如何安全地存储它们:https://www.youtube.com/watch?v=yvviEA1pOXw

此外,如果您正在寻找建立一个不使用“典型”网站的网站。服务器端会话,并与现有的客户端前端Web框架(如Angular.js / React.js /等)一起使用,您可能需要调查JSON Web令牌(JWT)。这些令牌可以让你创造出“愚蠢”的代币。不需要在服务器上进行数据库查找的Cookie,可以极大地加速您的网络应用/ API服务:https://stormpath.com/blog/build-secure-user-interfaces-using-jwts/

希望这有帮助!

答案 1 :(得分:0)

fine manual州:

  

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

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

cookie中的会话ID仅用作在会话存储中查找实际数据的密钥。