ShiErFeng/shierfeng-fastapi-backend/utils/dependency_util.py
2026-07-24 09:43:10 +08:00

50 lines
1.7 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from fastapi import Request
from common.context import RequestContext
from config.env import AppConfig
from exceptions.exception import PermissionException
class DependencyUtil:
"""
依赖项工具类
"""
@classmethod
def check_exclude_routes(cls, request: Request, err_msg: str = '当前路由不在认证规则内,不可使用该依赖项') -> None:
"""
检查路径和方法是否匹配排除路由模式
:param request: 请求对象
:param err_msg: 错误信息
:return: None
"""
# 获取当前请求路径和方法
path = request.url.path
method = request.method.upper()
# 从配置中获取APP_ROOT_PATH
app_root_path = AppConfig.app_root_path
# 去掉APP_ROOT_PATH前缀
if app_root_path and path.startswith(app_root_path):
path = path[len(app_root_path) :]
# 获取编译后的排除路由模式列表
exclude_patterns = RequestContext.get_current_exclude_patterns()
# 检查当前路由是否在排除路由列表中
if path and method and exclude_patterns:
for item in exclude_patterns:
pattern = item['pattern']
exclude_methods = item['methods']
ignore_paths = item['ignore_paths']
# 检查当前路径是否在忽略列表中
if path in ignore_paths:
continue
# 检查路径是否匹配并且methods为空列表匹配所有方法或者当前方法在允许列表中
if pattern.match(path) and (not exclude_methods or method in exclude_methods):
raise PermissionException(data='', message=err_msg)