From fd6aa4fb39acc6fc079cb6a4ef9bc528a5f0fe43 Mon Sep 17 00:00:00 2001 From: shaohuzhang1 <80892890+shaohuzhang1@users.noreply.github.com> Date: Tue, 9 Jul 2024 18:59:15 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E8=AE=A4=E8=AF=81?= =?UTF-8?q?=E9=80=BB=E8=BE=91=20(#724)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/common/auth/authenticate.py | 16 ++++++++++++---- apps/smartdoc/settings/__init__.py | 1 + apps/smartdoc/settings/auth.py | 19 +++++++++++++++++++ 3 files changed, 32 insertions(+), 4 deletions(-) create mode 100644 apps/smartdoc/settings/auth.py diff --git a/apps/common/auth/authenticate.py b/apps/common/auth/authenticate.py index 3d2a2258e..424f85965 100644 --- a/apps/common/auth/authenticate.py +++ b/apps/common/auth/authenticate.py @@ -7,14 +7,13 @@ @desc: 认证类 """ import traceback +from importlib import import_module +from django.conf import settings from django.core import cache from django.core import signing from rest_framework.authentication import TokenAuthentication -from common.auth.handle.impl.application_key import ApplicationKey -from common.auth.handle.impl.public_access_token import PublicAccessToken -from common.auth.handle.impl.user_token import UserToken from common.exception.app_exception import AppAuthenticationFailed, AppEmbedIdentityFailed, AppChatNumOutOfBoundsFailed token_cache = cache.caches['token_cache'] @@ -25,7 +24,16 @@ class AnonymousAuthentication(TokenAuthentication): return None, None -handles = [UserToken(), PublicAccessToken(), ApplicationKey()] +def new_instance_by_class_path(class_path: str): + parts = class_path.rpartition('.') + package_path = parts[0] + class_name = parts[2] + module = import_module(package_path) + HandlerClass = getattr(module, class_name) + return HandlerClass() + + +handles = [new_instance_by_class_path(class_path) for class_path in settings.AUTH_HANDLES] class TokenDetails: diff --git a/apps/smartdoc/settings/__init__.py b/apps/smartdoc/settings/__init__.py index 2908253e3..dd08e45de 100644 --- a/apps/smartdoc/settings/__init__.py +++ b/apps/smartdoc/settings/__init__.py @@ -8,3 +8,4 @@ """ from .base import * from .logging import * +from .auth import * diff --git a/apps/smartdoc/settings/auth.py b/apps/smartdoc/settings/auth.py new file mode 100644 index 000000000..077f98b3a --- /dev/null +++ b/apps/smartdoc/settings/auth.py @@ -0,0 +1,19 @@ +# coding=utf-8 +""" + @project: MaxKB + @Author:虎 + @file: auth.py + @date:2024/7/9 18:47 + @desc: +""" +USER_TOKEN_AUTH = 'common.auth.handle.impl.user_token.UserToken' + +PUBLIC_ACCESS_TOKEN_AUTH = 'common.auth.handle.impl.public_access_token.PublicAccessToken' + +APPLICATION_KEY_AUTH = 'common.auth.handle.impl.application_key.ApplicationKey' + +AUTH_HANDLES = [ + USER_TOKEN_AUTH, + PUBLIC_ACCESS_TOKEN_AUTH, + APPLICATION_KEY_AUTH +]