节点表达会话机制

Node express session mechanism

我一直以为如果使用app.use(session({store: mongoConnection}))的话express session信息是存储在服务器端的mongodb中的。

但是当我尝试使用第一个浏览器检索先前在服务器端设置的会话变量并转到下一个浏览器获取它时,我无法获取该变量。那么最终会话变量会存储到特定浏览器的 cookie 中吗?否则,无论我使用哪种浏览器,我都会得到该变量。

如果是这样,app.use mongo 连接有什么作用?它存储了什么?

会话数据存储在会话存储中。但是 cookie 用于跟踪给定浏览器会话的会话 ID。 cookie 不传送会话数据,仅传送会话 ID 和其他一些用于验证目的的信息。实际会话数据存储在会话存储中,不通过线路传输。从而防止某种攻击。

用于跟踪会话的 cookie 会根据会话期间的每个请求从浏览器传输到服务器。因此您无法从其他浏览器访问会话信息。

您正在使用的 Session Storage 用于在 MongoDB 中存储会话变量。 重新启动 express.js 服务器后,相同的 user/browser 选项卡会返回,它们可以获得相同的变量。否则,这些变量将存储在内存中,并在您的服务器停止时被删除。