【问题标题】:How can i create session variables in Node.JS without express?如何在没有 express 的情况下在 Node.JS 中创建会话变量?
【发布时间】:2019-06-26 04:55:12
【问题描述】:

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

如果有人能给我一些例子,我将不胜感激。

【问题讨论】:

标签: node.js express variables session cookies


【解决方案1】:

首先,除非您自己构建东西只是因为您想学习如何自己动手,否则真的没有理由重新发明已经在现有模块中精心设计的东西。因为这是服务器端代码,所以使用一个已经测试过的模块来做你想做的事情真的没有任何惩罚。所以,我的第一个建议是使用 Express 和 express-session。它为您完成所有会话管理,并为您提供更多时间来处理项目的各个方面,这将真正有助于项目成功或失败。

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


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

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

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

【讨论】:

    猜你喜欢
    • 2015-06-17
    • 1970-01-01
    • 1970-01-01
    • 2012-06-25
    • 2012-09-21
    • 1970-01-01
    • 1970-01-01
    • 2016-05-14
    • 1970-01-01
    相关资源
    最近更新 更多