fix(#12): 实现 refresh token 查找功能
- 完善 _find_session_by_refresh_token() 方法 - 使用 session_store.get_session_by_refresh_token() 直接查询 - 利用 Redis 反向索引实现 O(1) 查找复杂度
This commit is contained in:
Regular → Executable
+9
-13
@@ -248,20 +248,16 @@ class RefreshTokenUseCase:
|
||||
"""
|
||||
通过 refresh_token 查找 session
|
||||
|
||||
遍历所有 session 查找匹配的 refresh_token(生产环境应使用索引优化)
|
||||
使用 Redis 中的反向索引 (refresh_token -> session_id) 快速查找 session。
|
||||
反向索引在 save_session 时创建,确保了 O(1) 的查找复杂度。
|
||||
|
||||
Args:
|
||||
refresh_token: 刷新令牌
|
||||
|
||||
Returns:
|
||||
Session 数据字典,包含 session_id, user_id 等信息;如果不存在返回 None
|
||||
"""
|
||||
# Scan Redis for all session keys and check refresh_token
|
||||
# This is a simplified implementation - in production, use a reverse index
|
||||
# e.g., store refresh_token -> session_id mapping in Redis
|
||||
|
||||
# For now, iterate through user sessions
|
||||
# In a real implementation, you would maintain a reverse index:
|
||||
# refresh_token:session_id -> session_id
|
||||
# or use Redis SCAN to find sessions with matching refresh_token
|
||||
|
||||
# Simplified: iterate users (not scalable for production)
|
||||
# In production, add: session_store.save_refresh_token_index(refresh_token, session_id)
|
||||
return None # Placeholder - implement with reverse index in production
|
||||
return self.session_store.get_session_by_refresh_token(refresh_token)
|
||||
|
||||
|
||||
class LogoutRequest:
|
||||
|
||||
Reference in New Issue
Block a user