创建没有 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/Passport 创建会话但不向前端发送 cookie