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:
minecraft1024a
2025-11-16 13:31:59 +08:00
committed by Windpicker-owo
parent c2e05a8257
commit 334df4d87f
5 changed files with 17 additions and 14 deletions

View File

@@ -29,4 +29,9 @@ async def get_api_key(api_key: str = Security(api_key_header_auth)) -> str:
status_code=HTTP_403_FORBIDDEN,
detail="无效的API密钥",
)
return api_key
return api_key
# 创建一个可重用的依赖项,供插件开发者在其需要验证的端点上使用
# 用法: @router.get("/protected_route", dependencies=[VerifiedDep])
# 或者: async def my_endpoint(_=VerifiedDep): ...
VerifiedDep = Depends(get_api_key)