diff --git a/backend/app/admin/api/v1/auth/auth.py b/backend/app/admin/api/v1/auth/auth.py index eb4730858..8436e703c 100644 --- a/backend/app/admin/api/v1/auth/auth.py +++ b/backend/app/admin/api/v1/auth/auth.py @@ -47,7 +47,7 @@ async def refresh_token(request: Request) -> ResponseSchemaModel[GetNewToken]: return response_base.success(data=data) -@router.post('/logout', summary='用户登出') +@router.post('/logout', summary='用户登出', dependencies=[DependsJwtAuth]) async def logout(request: Request, response: Response) -> ResponseModel: await auth_service.logout(request=request, response=response) return response_base.success() diff --git a/backend/app/admin/service/auth_service.py b/backend/app/admin/service/auth_service.py index 85d57d28e..be8e51f4a 100644 --- a/backend/app/admin/service/auth_service.py +++ b/backend/app/admin/service/auth_service.py @@ -246,20 +246,10 @@ async def logout(*, request: Request, response: Response) -> None: finally: response.delete_cookie(settings.COOKIE_REFRESH_TOKEN_KEY) - # 清理缓存 - if request.user.is_multi_login: - await redis_client.delete(f'{settings.TOKEN_REDIS_PREFIX}:{user_id}:{session_uuid}') - await redis_client.delete(f'{settings.TOKEN_EXTRA_INFO_REDIS_PREFIX}:{user_id}:{session_uuid}') - if refresh_token: - await redis_client.delete(f'{settings.TOKEN_REFRESH_REDIS_PREFIX}:{user_id}:{refresh_token}') - else: - key_prefix = [ - f'{settings.TOKEN_REDIS_PREFIX}:{user_id}:', - f'{settings.TOKEN_REFRESH_REDIS_PREFIX}:{user_id}:', - f'{settings.TOKEN_EXTRA_INFO_REDIS_PREFIX}:{user_id}:', - ] - for prefix in key_prefix: - await redis_client.delete_prefix(prefix) + await redis_client.delete(f'{settings.TOKEN_REDIS_PREFIX}:{user_id}:{session_uuid}') + await redis_client.delete(f'{settings.TOKEN_EXTRA_INFO_REDIS_PREFIX}:{user_id}:{session_uuid}') + if refresh_token: + await redis_client.delete(f'{settings.TOKEN_REFRESH_REDIS_PREFIX}:{user_id}:{refresh_token}') auth_service: AuthService = AuthService() diff --git a/backend/core/conf.py b/backend/core/conf.py index f8aeb99c2..7068a8cf2 100644 --- a/backend/core/conf.py +++ b/backend/core/conf.py @@ -71,6 +71,7 @@ class Settings(BaseSettings): TOKEN_REFRESH_REDIS_PREFIX: str = 'fba:refresh_token' TOKEN_REQUEST_PATH_EXCLUDE: list[str] = [ # JWT / RBAC 路由白名单 f'{FASTAPI_API_V1_PATH}/auth/login', + f'{FASTAPI_API_V1_PATH}/auth/logout', ] # JWT