Skip to content

Commit 408c866

Browse files
authored
Update cache cleanup for logout interface (#678)
* Update cache cleanup for logout interface * Add dependencies of interface
1 parent bac41a4 commit 408c866

File tree

3 files changed

+6
-15
lines changed

3 files changed

+6
-15
lines changed

backend/app/admin/api/v1/auth/auth.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ async def refresh_token(request: Request) -> ResponseSchemaModel[GetNewToken]:
4747
return response_base.success(data=data)
4848

4949

50-
@router.post('/logout', summary='用户登出')
50+
@router.post('/logout', summary='用户登出', dependencies=[DependsJwtAuth])
5151
async def logout(request: Request, response: Response) -> ResponseModel:
5252
await auth_service.logout(request=request, response=response)
5353
return response_base.success()

backend/app/admin/service/auth_service.py

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -246,20 +246,10 @@ async def logout(*, request: Request, response: Response) -> None:
246246
finally:
247247
response.delete_cookie(settings.COOKIE_REFRESH_TOKEN_KEY)
248248

249-
# 清理缓存
250-
if request.user.is_multi_login:
251-
await redis_client.delete(f'{settings.TOKEN_REDIS_PREFIX}:{user_id}:{session_uuid}')
252-
await redis_client.delete(f'{settings.TOKEN_EXTRA_INFO_REDIS_PREFIX}:{user_id}:{session_uuid}')
253-
if refresh_token:
254-
await redis_client.delete(f'{settings.TOKEN_REFRESH_REDIS_PREFIX}:{user_id}:{refresh_token}')
255-
else:
256-
key_prefix = [
257-
f'{settings.TOKEN_REDIS_PREFIX}:{user_id}:',
258-
f'{settings.TOKEN_REFRESH_REDIS_PREFIX}:{user_id}:',
259-
f'{settings.TOKEN_EXTRA_INFO_REDIS_PREFIX}:{user_id}:',
260-
]
261-
for prefix in key_prefix:
262-
await redis_client.delete_prefix(prefix)
249+
await redis_client.delete(f'{settings.TOKEN_REDIS_PREFIX}:{user_id}:{session_uuid}')
250+
await redis_client.delete(f'{settings.TOKEN_EXTRA_INFO_REDIS_PREFIX}:{user_id}:{session_uuid}')
251+
if refresh_token:
252+
await redis_client.delete(f'{settings.TOKEN_REFRESH_REDIS_PREFIX}:{user_id}:{refresh_token}')
263253

264254

265255
auth_service: AuthService = AuthService()

backend/core/conf.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ class Settings(BaseSettings):
7171
TOKEN_REFRESH_REDIS_PREFIX: str = 'fba:refresh_token'
7272
TOKEN_REQUEST_PATH_EXCLUDE: list[str] = [ # JWT / RBAC 路由白名单
7373
f'{FASTAPI_API_V1_PATH}/auth/login',
74+
f'{FASTAPI_API_V1_PATH}/auth/logout',
7475
]
7576

7677
# JWT

0 commit comments

Comments
 (0)