【问题标题】:How to handle unique session(One user session)using Node.js express session?如何使用 Node.js 快速会话处理唯一会话(一个用户会话)?
【发布时间】:2020-05-07 13:20:44
【问题描述】:
我需要您的帮助来解决以下查询
如何防止用户同时从两个不同的浏览器登录系统?
假设用户已登录 Firefox,如果同一用户再次从同一台或不同计算机上的其他浏览器(如 Chrome)登录,则应销毁 Firefox 上的会话,并且用户应在 Chrome 中保持活动状态。
我在 Node.js 中使用快速会话
我需要某种数据库来存储会话还是可以单独使用快速会话来实现?
焦急等待您的建议
【问题讨论】:
标签:
node.js
express
session
【解决方案1】:
@Gurpinder 你必须为此使用数据库。确保您有一个唯一定义用户的唯一元素。对于该特定用户,将 sessionId 映射到 DB 中的唯一 ID 中。
一旦使用相同的唯一 ID,就会发出另一个登录请求。销毁前一个会话并保存新的会话。
假设我们有一个名为 Session 的表/集合,一旦登录完成,请执行以下操作。
Session.find({
userId : userData.userId
}).remove(function (error, result) {
if (error) {
logger.error(error);
callback(null);
}
else{
that.storeSession(userData, callback);
}
});
第 1 步:查找会话是否已存在
第 2 步:如果存在则删除
第 3 步:创建一个新会话。