MCPcopy
hub / github.com/Wei-Shaw/sub2api / RefreshTokenCache

Interface RefreshTokenCache

backend/internal/service/refresh_token_cache.go:29–73  ·  view source on GitHub ↗

RefreshTokenCache 管理Refresh Token的Redis缓存 用于JWT Token刷新机制,支持Token轮转和防重放攻击 Key 格式: - refresh_token:{token_hash} -> RefreshTokenData (JSON) - user_refresh_tokens:{user_id} -> Set - token_family:{family_id} -> Set

Source from the content-addressed store, hash-verified

27// - user_refresh_tokens:{user_id} -> Set<token_hash>
28// - token_family:{family_id} -> Set<token_hash>
29type RefreshTokenCache interface {
30 // StoreRefreshToken 存储Refresh Token
31 // tokenHash: Token的SHA256哈希值(不存储原始Token)
32 // data: Token关联的数据
33 // ttl: Token过期时间
34 StoreRefreshToken(ctx context.Context, tokenHash string, data *RefreshTokenData, ttl time.Duration) error
35
36 // GetRefreshToken 获取Refresh Token数据
37 // 返回 (data, nil) 如果Token存在
38 // 返回 (nil, ErrRefreshTokenNotFound) 如果Token不存在
39 // 返回 (nil, err) 如果发生其他错误
40 GetRefreshToken(ctx context.Context, tokenHash string) (*RefreshTokenData, error)
41
42 // DeleteRefreshToken 删除单个Refresh Token
43 // 用于Token轮转时使旧Token失效
44 DeleteRefreshToken(ctx context.Context, tokenHash string) error
45
46 // DeleteUserRefreshTokens 删除用户的所有Refresh Token
47 // 用于密码更改或用户主动登出所有设备
48 DeleteUserRefreshTokens(ctx context.Context, userID int64) error
49
50 // DeleteTokenFamily 删除整个Token家族
51 // 用于检测到Token重放攻击时,撤销整个会话链
52 DeleteTokenFamily(ctx context.Context, familyID string) error
53
54 // AddToUserTokenSet 将Token添加到用户的Token集合
55 // 用于跟踪用户的所有活跃Refresh Token
56 AddToUserTokenSet(ctx context.Context, userID int64, tokenHash string, ttl time.Duration) error
57
58 // AddToFamilyTokenSet 将Token添加到家族Token集合
59 // 用于跟踪同一登录会话的所有Token
60 AddToFamilyTokenSet(ctx context.Context, familyID string, tokenHash string, ttl time.Duration) error
61
62 // GetUserTokenHashes 获取用户的所有Token哈希
63 // 用于批量删除用户Token
64 GetUserTokenHashes(ctx context.Context, userID int64) ([]string, error)
65
66 // GetFamilyTokenHashes 获取家族的所有Token哈希
67 // 用于批量删除家族Token
68 GetFamilyTokenHashes(ctx context.Context, familyID string) ([]string, error)
69
70 // IsTokenInFamily 检查Token是否属于指定家族
71 // 用于验证Token家族关系
72 IsTokenInFamily(ctx context.Context, familyID string, tokenHash string) (bool, error)
73}

Callers 8

generateRefreshTokenMethod · 0.65
RefreshTokenPairMethod · 0.65
RefreshTokenPairMethod · 0.65
RevokeRefreshTokenMethod · 0.65
RevokeAllUserSessionsMethod · 0.65
RefreshTokenPairMethod · 0.65
generateRefreshTokenMethod · 0.65
generateRefreshTokenMethod · 0.65

Implementers 6

emailBindRefreshTokenCacheStubbackend/internal/service/auth_service_
refreshTokenCacheStubbackend/internal/service/auth_service_
refreshTokenCachebackend/internal/repository/refresh_to
oauthPendingFlowRefreshTokenCacheStubbackend/internal/handler/auth_oauth_pe
wechatOAuthRefreshTokenCacheStubbackend/internal/handler/auth_wechat_o
userHandlerRefreshTokenCacheStubbackend/internal/handler/user_handler_

Calls

no outgoing calls

Tested by

no test coverage detected