修正数据库回收失败后的令牌状态
This commit is contained in:
parent
42e03242a9
commit
d9a4ba9c56
@ -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("数据库临时凭据回收失败")
|
||||
}
|
||||
|
||||
@ -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]
|
||||
|
||||
Loading…
Reference in New Issue
Block a user