From 60d07a477aaa6f49c1d7f33471814999f5ccd3a8 Mon Sep 17 00:00:00 2001 From: zy7y <13271962515@163.com> Date: Tue, 4 Oct 2022 13:01:38 +0800 Subject: [PATCH] fixbug: #1 --- backend/core/utils.py | 17 +++++++++++++++-- backend/main.py | 8 +++++--- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/backend/core/utils.py b/backend/core/utils.py index 4e40b9e..344b049 100644 --- a/backend/core/utils.py +++ b/backend/core/utils.py @@ -51,7 +51,12 @@ def get_system_info(): def load_routers( - app, package_path: str = "router", router_name: str = "router", is_init=False + app, + package_path: str = "router", + router_name: str = "router", + is_init=False, + no_depends="common", + depends: list = None, ): """ 自动注册路由 @@ -59,6 +64,8 @@ def load_routers( :param package_path: 路由包所在路径,默认相对路径router包 :param router_name: APIRouter实例名称,需所有实例统一,默认router :param is_init: 是否在包中的__init__.py中导入了所有APIRouter实例,默认否 + :param no_depends: 不需要依赖注入的模块(py文件)名,默认common + :param depends: 依赖注入列表 默认为None :return: 默认None """ @@ -66,9 +73,15 @@ def load_routers( """注册路由,module_obj: 模块对象""" if hasattr(module_obj, router_name): router_obj = getattr(module_obj, router_name) - app.include_router(router_obj) + if no_depends in module_obj.__name__: + kwargs = dict(router=router_obj) + else: + kwargs = dict(router=router_obj, dependencies=depends) + app.include_router(**kwargs) logger.info("开始扫描路由。") + if depends is None: + depends = [] if is_init: # 1. init 导入了其他自文件包时 for _, module in inspect.getmembers( diff --git a/backend/main.py b/backend/main.py index c6a6d0a..5d1cb97 100644 --- a/backend/main.py +++ b/backend/main.py @@ -1,9 +1,9 @@ -from fastapi import FastAPI +from fastapi import Depends, FastAPI from core.events import close_orm, init_orm from core.exceptions import exception_handlers -from core.log import logger from core.middleware import middlewares +from core.security import check_permissions from core.utils import load_routers app = FastAPI( @@ -13,7 +13,9 @@ app = FastAPI( exception_handlers=exception_handlers, ) -load_routers(app, "controller") +load_routers( + app, "controller", no_depends="common", depends=[Depends(check_permissions)] +) if __name__ == "__main__": import uvicorn