使用核心的Node.js而不是Express.js进行会话管理

3

如何在核心node.js /非express.js项目中处理/创建服务器端会话管理的中间件。我可以找到适用于基于express的项目的模块,但对于核心node.js项目则不行。请为非express.js项目建议任何模块或中间件。

1个回答

3

会话管理可以通过数据库(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并调用该方法。


嗨,谢谢您的回复。我明白了。但是如何计算用户的空闲时间(而不是总共花费的时间),以便我可以将其注销? - Subham
1
@Subham,注销登录的主要想法是为该用户添加时间戳。例如,对于每个带有某些会话的用户请求,您必须更新用户会话对象中的时间字段。将其保存为时间戳。在处理用户请求时,您可以验证当前服务器时间戳是否小于或大于允许的用户空闲时间,并产生某些操作。返回数据或错误。 - Grynets
明白了,谢谢。 - Subham

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接