fix: 修复 MemoryStore.Set 重复追加 byUID 索引导致会话列表重复
This commit is contained in:
@ -50,13 +50,18 @@ func (ms *MemoryStore) Set(s *Session) error {
|
|||||||
ms.mu.Lock()
|
ms.mu.Lock()
|
||||||
defer ms.mu.Unlock()
|
defer ms.mu.Unlock()
|
||||||
|
|
||||||
// 如果 sid 已存在且 uid 不同,先从旧 uid 索引移除
|
if old, ok := ms.sessions[s.ID]; ok {
|
||||||
if old, ok := ms.sessions[s.ID]; ok && old.UserID != s.UserID {
|
// sid 已存在:仅当 uid 变更时更新索引
|
||||||
|
if old.UserID != s.UserID {
|
||||||
ms.removeFromUIDIndex(old.UserID, s.ID)
|
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.sessions[s.ID] = s
|
||||||
ms.byUID[s.UserID] = append(ms.byUID[s.UserID], s.ID)
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user