node.js - 使用没有 express.js 的核心 node.js 进行会话管理
问题描述
如何在核心 node.js /non express.js 项目中处理/创建用于服务器端会话管理的中间件。我可以找到基于 express 的项目的模块,但不能找到核心 node.js。请向我推荐非 express.js 项目的任何模块或中间件。
解决方案
会话管理可以通过数据库(MySQL、MongoDB、Redis 等)或一些本地缓存来实现。
会话背后的主要逻辑 - 是带有数据的对象。
因此,您可以在第一次交互时为用户提供一些随机 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
调用该方法。
推荐阅读
- amazon-web-services - 我们可以使用 AWS 胶水分析 RDS 数据库并使用 ETL 将分析的数据存储到 rds mysql 表中吗
- c# - 检查两个字符串是否在两个不同的数组中但在相同的位置
- angular - d3中的动画折线图
- bash - 如何将 GNU 与 find -exec 并行使用?
- c# - 如何借助 ASP.NET MVC Web 应用程序的 Powershell 脚本使用 Entity Framework 在 Windows IIS 服务器中实现 cron 作业
- python - BeautifulSoup AttributeError:“NoneType”对象没有属性“文本”
- python - 在设计 CLI 时,如何指示需要 FILE(通过标准输入或参数)
- c# - 自定义路由 ASP.NET MVC
- git - 将 github 私有存储库克隆到 C 面板版本控制系统时出现问题(公钥被拒绝)
- javascript - 找出集合中的哪个数字组合加起来是给定的总数?