创建不带 express 的会话

Creating sessions without express

提问人:No One 提问时间:9/13/2017 更新时间:1/12/2021 访问量:985

问:

如何在没有像 express 这样的框架的情况下Node.js创建会话并管理它们?

大多数提到在 node 中管理会话的问题都是使用 express 来做到这一点的,但我想知道如何在不使用 express 的情况下做到这一点。

node.js 会话 服务器端

评论


答:

0赞 Anubhav 10/2/2017 #1

这有点像重新发明轮子。但有时,重新发明轮子对于学习目的很有用。

会话处理主要通过 cookie(有时也编码在 URL 中)完成。在此过程中,服务器向客户端发送唯一标识符 (cookie) 并创建一个本地文件,其中包含您在会话中存储的数据,在下一个请求中,它会检查唯一标识符是否存在,如果是,它将与所有保存的文件匹配,如果匹配,它将选择该文件并从该文件中读取数据,然后您将能够使用该会话。如果文件或唯一 ID 不存在,它将创建一个具有该唯一 ID 的空文件,并将其在 set-cookie 标头中发送到客户端,以便下次标识会话。

以下是处理会话的一些步骤:

  1. 收到请求后,首先检查 req 中的 cookie 以找到您的会话 cookie。
  2. 如果存在,请从中读取唯一 ID,并检查具有该名称(唯一标识符)的文件是否存在。
  3. 如果文件存在,请从文件中读取对象并将其存储在名为 mysession 的局部变量中(自己命名)。
  4. 如果文件或会话 Cookie 不存在,请使用随机生成的唯一标识符创建一个空文件。并在 set-cookie 标头的帮助下以会话 cookie 的形式将此唯一标识符发送给客户端。

在向客户端发送任何数据之前,请执行上述所有操作。

为对 mysession 变量所做的每次修改,编写包含该变量内容的会话文件。