diff --git a/internal/session/memory_store.go b/internal/session/memory_store.go index 7fba7ad..293e228 100644 --- a/internal/session/memory_store.go +++ b/internal/session/memory_store.go @@ -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 }