From d9a4ba9c56b6d690b8a9b70da979d13cb7b3c30b Mon Sep 17 00:00:00 2001 From: xuans Date: Wed, 30 Sep 2026 13:15:54 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E6=95=B0=E6=8D=AE=E5=BA=93?= =?UTF-8?q?=E5=9B=9E=E6=94=B6=E5=A4=B1=E8=B4=A5=E5=90=8E=E7=9A=84=E4=BB=A4?= =?UTF-8?q?=E7=89=8C=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/internal/bootstrap/database.go | 2 +- backend/internal/bootstrap/database_test.go | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/backend/internal/bootstrap/database.go b/backend/internal/bootstrap/database.go index c72e90b..d63d060 100644 --- a/backend/internal/bootstrap/database.go +++ b/backend/internal/bootstrap/database.go @@ -215,7 +215,7 @@ func (m *DatabaseVerificationManager) Discard(token string) error { if !ok { return errors.New("数据库验证令牌无效或已经过期") } - if err := m.deleteOrQueueCredential(session.CredentialRef); err != nil { + if err := m.deleteCredential(session.CredentialRef); err != nil { m.restoreSession(token, session) return errors.New("数据库临时凭据回收失败") } diff --git a/backend/internal/bootstrap/database_test.go b/backend/internal/bootstrap/database_test.go index 7c09d23..d60c0b7 100644 --- a/backend/internal/bootstrap/database_test.go +++ b/backend/internal/bootstrap/database_test.go @@ -393,8 +393,14 @@ func TestDatabaseVerificationExpiredCleanupFailureRestoresTokenForRetry(t *testi t.Fatal(err) } manager.now = func() time.Time { return result.ExpiresAt } - if _, err := manager.Check(result.VerificationToken, result.CredentialRef); err != nil { - t.Fatalf("expected failed expiry cleanup to preserve the session for retry: %v", err) + if _, err := manager.Check(result.VerificationToken, result.CredentialRef); err == nil { + t.Fatal("expired token must be rejected even when its credential cleanup fails") + } + manager.mu.Lock() + _, restored := manager.sessions[result.VerificationToken] + manager.mu.Unlock() + if !restored { + t.Fatal("failed expiry cleanup must restore the session for a later retry") } store.mu.Lock() _, retained := store.values[result.CredentialRef]