refactor(plugin_system): 移除路由级认证,引入端点级安全依赖
之前的插件路由认证机制通过在 `RouterInfo` 中设置 `auth_required` 标志,对整个路由组件统一应用API密钥验证。这种方式缺乏灵活性,无法对单个端点进行细粒度的安全控制。 本次重构移除了 `auth_required` 机制,转而引入一个可重用的 FastAPI 依赖项 `VerifiedDep`。插件开发者现在可以按需将其应用到需要保护的特定端点上,从而实现更灵活、更精确的访问控制。 `hello_world_plugin` 已更新,以演示新的认证方式。 BREAKING CHANGE: 移除了 `RouterInfo` 中的 `auth_required` 属性。所有依赖此属性进行认证的插件路由都需要更新,改为在需要保护的端点上使用 `VerifiedDep` 依赖项。
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
import random
|
||||
from typing import Any, ClassVar
|
||||
|
||||
from mmc.src.plugin_system.base.base_http_component import BaseRouterComponent
|
||||
from src.common.logger import get_logger
|
||||
from src.common.security import VerifiedDep
|
||||
|
||||
# 修正导入路径,让Pylance不再抱怨
|
||||
from src.plugin_system import (
|
||||
@@ -21,6 +21,7 @@ from src.plugin_system import (
|
||||
register_plugin,
|
||||
)
|
||||
from src.plugin_system.base.base_event import HandlerResult
|
||||
from src.plugin_system.base.base_http_component import BaseRouterComponent
|
||||
from src.plugin_system.base.component_types import InjectionRule, InjectionType
|
||||
|
||||
logger = get_logger("hello_world_plugin")
|
||||
@@ -208,7 +209,7 @@ class HelloWorldRouter(BaseRouterComponent):
|
||||
|
||||
def register_endpoints(self) -> None:
|
||||
@self.router.get("/greet", summary="返回一个问候消息")
|
||||
def greet():
|
||||
def greet(_=VerifiedDep):
|
||||
"""这个端点返回一个固定的问候语。"""
|
||||
return {"message": "Hello from your new API endpoint!"}
|
||||
|
||||
@@ -218,7 +219,7 @@ class HelloWorldPlugin(BasePlugin):
|
||||
"""一个包含四大核心组件和高级配置功能的入门示例插件。"""
|
||||
|
||||
plugin_name = "hello_world_plugin"
|
||||
enable_plugin = True
|
||||
enable_plugin: bool = True
|
||||
dependencies: ClassVar = []
|
||||
python_dependencies: ClassVar = []
|
||||
config_file_name = "config.toml"
|
||||
|
||||
Reference in New Issue
Block a user