如何限制用户多端重复登录,确保同一时间仅存在一个活跃登录会话
单用户单活跃会话限制方案
核心目标
限制用户同一时间存在多个登录会话,确保同一应用同一用户仅保留1个活跃登录会话。
具体限制规则
- 同一用户同一时间仅允许在单个浏览器登录同一应用
- 旧会话被强制登出后,用户在旧浏览器端操作时会直接跳转至登录页,可搭配提示「账号已在其他设备登录」提升使用体验
服务端核心处理逻辑
用户发起登录请求,完成账号密码校验通过后,必须按如下步骤处理会话:
- 检索该用户针对当前登录应用的所有历史活跃会话
- 若存在其他浏览器中有效的活跃会话,批量将这些会话标记为失效状态,触发强制登出逻辑
- 仅保留本次登录生成的最新会话为有效状态
你也可以参考如下伪代码实现核心逻辑:
// 登录阶段会话处理伪代码 function handleSessionAfterAuth(userId, currentAppId, newSessionId) { // 获取该用户在当前应用下的所有有效会话 const existedValidSessions = queryUserValidSessions(userId, currentAppId) if (existedValidSessions.length > 0) { // 批量失效所有旧会话 batchDisableSessions(existedValidSessions) } // 写入新会话为唯一有效会话 saveValidSession(userId, currentAppId, newSessionId) }
内容的提问来源于stack exchange,提问作者Nikhil Gondaliya
相关产品推荐
相关产品推荐

