Express Session 手动分配会话

问题描述 投票:0回答:1

我对快速会话中间件不明白的是会话的重新分配。例如。当有人第一次打开我的页面时,中间件将为该用户创建一个全新的会话,用户注册一个帐户,然后我们通过例如以下方式在这些登录凭据和会话之间创建关联:有第二个数据库表(除了所需的中间件之外)。
现在,如果该用户再次打开页面,则会创建一个新会话,然后用户登录,我们可以看到他已经有了一个会话。那么现在,我们是否必须销毁新会话并将实际会话分配给请求对象?如果没有,我可以想象很多未使用的会话将在中间件数据库表中。

为什么中间件会根据请求立即创建一个新会话?重新分配会话是否需要登录名或代码字之类的东西?会话重新分配到底是如何进行的?

node.js express session middleware
1个回答
0
投票

Express-session 通过客户端 cookie 工作。每当它收到传入请求时,它都会检查是否有来自客户端的会话 cookie。如果有,它会在其会话存储中找到与该会话 cookie 中的 id 相对应的会话对象,该对象将成为

req.session
对象,并且不会创建新会话。

如果传入请求中没有会话 cookie,或者会话 cookie 中的 id 与会话存储中的会话对象不对应,则 Express 将为该请求创建一个新的会话对象。

如果用户从头开始登录(因为他们没有现有的会话 cookie),那么 Express-Session 将创建一个新的会话对象,当用户的凭据验证时,您可以在该新的会话对象中放入一些内容,从而您知道他们在您的系统中的身份。

如果用户从头开始登录并且碰巧拥有现有的会话 cookie,则快速会话将使用会话存储中预先存在的会话对象。当您验证他们的凭据时,您可以重新初始化会话对象,与上一段中的操作相同。

© www.soinside.com 2019 - 2024. All rights reserved.