node.js - 不使用 Express 创建 session

标签 node.js session server-side

如果没有像express这样的框架,如何在 Node.js 中创建 session 并管理它们?

大多数提到在 Node 中管理 session 的问题都是使用express来执行此操作,但我想知道如何在不使用express的情况下做到这一点。

最佳答案

这有点重新发明轮子。但有时,出于学习目的,重新发明轮子是有用的。

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

您可以按照以下步骤来处理 session :

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

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

将您对 mysession 变量所做的每次修改的内容写入 session 文件。

关于node.js - 不使用 Express 创建 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46182561/

相关文章:

node.js - 在 Heroku 上运行 Node.js 应用程序时出错

node.js - JS/node.js : Large switch-case blocks vs. 函数集合

php - 使用 mysql 的电子邮件和密码登录

javascript - 服务器使用带有nodejs和expressjs的twitter api自行关闭

model-view-controller - MEAN Stack 应用程序中的模型、 View 和 Controller 具体是什么?

javascript - 如何保护 Node.js 中的全局变量不被覆盖?

javascript - 无法读取我的 API 或特定 API [React.js/Node.js/Axios/Fetch]

java - 您可以使用 JPA 和 Hibernate 在一个事务中进行批量删除吗?

java - 我的 java applet 如何使用我的 PHP 认证 session ?

angular - 更改 ag-grid 上的页面和缓存 block 大小会导致项目无限加载