创建没有 express 的会话

Posted

技术标签:

【中文标题】创建没有 express 的会话【英文标题】:Creating sessions without express 【发布时间】:2018-02-21 06:44:29 【问题描述】:

如果没有 express 之类的框架,我如何在 Node.js 中创建和管理会话?

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

【问题讨论】:

【参考方案1】:

这有点像重新发明***。但有时为了学习目的,重新发明***很有用。

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

您可以按照以下步骤处理会话:

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

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

为您对该变量所做的每次修改,使用 mysession 变量的内容写入会话文件。

【讨论】:

以上是关于创建没有 express 的会话的主要内容,如果未能解决你的问题,请参考以下文章

Express.js/Passport 应用程序为每个请求创建新会话,尽管请求标头中有会话 ID

Express 在 auth 标头更改时创建不同的会话

没有 express.js 的 Socket.io 会话?

Express/Passport 创建会话但不向前端发送 cookie

NodeJS + Express - 将会话中间件应用于某些路由

Apollo express 没有快速护照会话