From b63dc9075f34ec132309232f8c1f2cd08a09fe5e Mon Sep 17 00:00:00 2001 From: Victor_Jay Date: Sun, 31 May 2026 00:08:08 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20MemoryStore.Set=20?= =?UTF-8?q?=E9=87=8D=E5=A4=8D=E8=BF=BD=E5=8A=A0=20byUID=20=E7=B4=A2?= =?UTF-8?q?=E5=BC=95=E5=AF=BC=E8=87=B4=E4=BC=9A=E8=AF=9D=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E9=87=8D=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/session/memory_store.go | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) 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 }