如何检查 Express.js 会话是否处于活动状态?

How can I check if a Express.js session is active?

我试图检查 Express.js 会话中的会话是否处于活动状态,但找不到任何相关信息。我将我的会话存储在 connect-mongo 的 MongoDB 存储中。我基本上需要检查用户的会话是否处于活动状态以在他们的头像上显示活动图标(前端不包括在这个问题中)。我只想创建后端 API 来做到这一点。

感谢您的帮助。

现在您的数据库中可能有一堆会话。为了在您的 express-app 中找到它们,您需要创建一个模式,以便 mongoose 知道要寻找什么:

// models/session.js
const sessionSchema = new mongoose.schema ({ 
  expires: Date,
  session: String,
});

module.exports = mongoose.model('Session', sessionSchema);

然后,在您的代码中的某处,您需要使用 mongoose 来查看此集合,例如:

const sessions = await Session.find({}).lean();
console.log(sessions) // sessions stored in the database

然后您应该会得到结果。您可能有很多会话,因此您需要查看会话密钥并过滤出您要查找的内容。

我已经成功地使用 Redis 完成了这个任务。我为每个对象设置了一个 TTL(生存时间),这样如果用户在一段时间内没有向某个路由发送 GET 请求,该对象将从 Redis 中删除,从而使用户 "incative" 当其他人获取他们的状态时。