如何在没有Express的Node.JS中创建会话变量?

时间:2019-06-25 19:55:24

标签: node.js express variables session cookies

我正在尝试在Node.JS上构建CMS,到目前为止,我仅通过包括MySQL模块就设法构建了所有内容。我想继续构建所有CMS核心模块,而不使用Express等外部库。我正在为登录目的进行会话。到目前为止,我可以使用标题Set-Cookie创建cookie,在其中存储用户的一些信息以在用户加载站点中的所有页面时识别其会话,但是我仍然找不到找到会话变量的方法。无需使用express或其他框架。

如果有人能给我一些例子,我会很感激。

1 个答案:

答案 0 :(得分:1)

首先,除非您只是因为要学习如何自己完成所有事情而自己构建事物,否则实际上没有理由重新发明现有模块中已经精心设计的事物。因为这是服务器端代码,所以使用经过测试的模块可以满足您的实际需求并没有任何惩罚。因此,我的第一个建议是使用Express和Express会话。它会为您完成所有会话管理,并为您提供更多时间来处理项目的各个方面,这将真正帮助项目成功或失败。

而且,首先使用node.js的最大好处是能够使用通过NPM和Github提供的庞大的现有代码库。


从概念上讲,这是会话在node.js / Web浏览器客户端/服务器世界中的工作方式。

  1. 从客户端到Web服务器的传入请求。
  2. 服务器创建某种保证的唯一cookie值,并将其设置为响应中的cookie。
  3. 服务器还会创建一个服务端会话对象,并将该对象放入某些数据存储中,并将会话cookie值作为该数据存储中的索引。
  4. 现在,每当来自同一客户端的将来的请求到达时,它都将带有该会话cookie。
  5. 对于每个传入的请求,服务器可以获取会话cookie值,并将其用作查找相应会话对象并获取它的键。
  6. 然后,任何请求处理程序都可以从会话对象读取数据或将数据写入会话对象。
  7. 通过这种方式,您可以使与特定客户端相关联的数据在服务器上保持安全,并且可以从一个请求到另一个请求使用。

如果要实现自己的会话系统,则必须能够创建这些唯一的会话cookie并创建某种类型的会话存储(可以是从内存中的Map对象到数据库的任何内容),请实现会话过期和会话存储清理,然后提供适当的中间件或实用程序功能,使它易于在任何单独的http请求上使用。