fix: 修复 MemoryStore.Set 重复追加 byUID 索引导致会话列表重复

This commit is contained in:
2026-05-31 00:08:08 +08:00
parent 2180c27b16
commit b63dc9075f

View File

@ -50,13 +50,18 @@ func (ms *MemoryStore) Set(s *Session) error {
ms.mu.Lock()
defer ms.mu.Unlock()
// 如果 sid 已存在且 uid 不同,先从旧 uid 索引移除
if old, ok := ms.sessions[s.ID]; ok && old.UserID != s.UserID {
ms.removeFromUIDIndex(old.UserID, s.ID)
if old, ok := ms.sessions[s.ID]; ok {
// sid 已存在:仅当 uid 变更时更新索引
if old.UserID != s.UserID {
ms.removeFromUIDIndex(old.UserID, s.ID)
ms.byUID[s.UserID] = append(ms.byUID[s.UserID], s.ID)
}
} else {
// 新 sid追加到索引
ms.byUID[s.UserID] = append(ms.byUID[s.UserID], s.ID)
}
ms.sessions[s.ID] = s
ms.byUID[s.UserID] = append(ms.byUID[s.UserID], s.ID)
return nil
}