node.js - 使用核心 Node.js 而不使用express.js 进行 session 管理

标签 node.js session

如何在核心 Node.js/非express.js 项目中处理/创建用于服务器端 session 管理的中间件。我可以找到基于 Express 的项目的模块,但不能找到核心 Node.js 的模块。请向我推荐任何适用于非express.js 项目的模块或中间件。

最佳答案

session 管理可以通过数据库(MySQL、MongoDB、Redis等)或一些本地缓存来实现。
session 背后的主要逻辑 - 是带有数据的对象。
因此,您可以在第一次交互时为用户提供一些随机 ID,例如 uuid
并将其保存到某个模块,如下所示:

class OwnSession(){
  constructor(){
   this.sessions = {};
  }

  getUser(sessionId){
   return this.sessions[sessionId];
  }

  setUser(sessionId, userData){
   if(this.sessions[sessionId]){
     Object.assign(this.sessions[sessionId], userData);
     return;
   }

    this.sessions[sessionId] = userData;
  }
}
// We export here new OwnSession() to keep singleton across your project.

module.exports = new OwnSession();

然后,在任何需要 OwnSession 的模块中并调用该方法。

关于node.js - 使用核心 Node.js 而不使用express.js 进行 session 管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53932342/

相关文章:

c# - 在服务器端保存值与在 ASP.net 中使用 Sessions 和 Request.QueryString

ruby-on-rails - 如何在 session 中存储简单的用户首选项

php - session 未启动 Laravel 5.3 Auth

php - 如何存储用户的 session 数据

javascript - 使用 es6 在 NodeJs 中导入 JSON 文件

node.js - Azure Bot Service SDK 是否需要 Restify? ( Node )

ajax - 无效的 JSON GET 请求 Express.js

node.js - 错误 : no open connections at Db. _executeQueryCommand Node.js

node.js - 优雅地关闭nodejs工作线程

node.js - Razorpay 签名验证未发生,因为 SHA256 Digest 是错误的 NodeJS