第二阶段已完成:统一插件平台已从“内置功能开关”扩展为可安装、签名校验、版本激活和回滚的插件系统。

主要成果:
- 新增独立插件 SDK:[PluginContracts.cs (line 11)](E:/jiaowu/src/Jiaowu.Plugin.Abstractions/PluginContracts.cs:11)
- 支持 RSA-PSS/SHA-256 签名插件包、Host API 兼容性和 ZIP 安全检查:[PluginPackageValidator.cs (line 14)](E:/jiaowu/src/Jiaowu.Api/Infrastructure/Plugins/PluginPackageValidator.cs:14)
- 支持暂存、待激活、重启装载、失败记录、版本回滚:[PluginPackageService.cs (line 32)](E:/jiaowu/src/Jiaowu.Api/Infrastructure/Plugins/PluginPackageService.cs:32)
- 插件可注册控制器、服务、数据库迁移、后台任务和事件处理器
- 外部插件 API 统一使用 /api/plugin-extensions/{pluginId},并受启用状态中间件控制
- 插件中心新增 ZIP/SIG 上传、状态展示、激活、回滚和删除功能:[PluginsView.vue (line 212)](E:/jiaowu/web/src/views/PluginsView.vue:212)
- 提供可运行示例插件:[SamplePlugin.cs (line 10)](E:/jiaowu/samples/Jiaowu.SamplePlugin/SamplePlugin.cs:10)
- 提供打包签名脚本:[package-plugin.ps1](E:/jiaowu/scripts/package-plugin.ps1)
- 完整开发文档:[plugin-sdk.md (line 1)](E:/jiaowu/docs/plugin-sdk.md:1)
- 系统版本已调整为 3.0.0-beta1
This commit is contained in:
biss committed 2026-10-01 10:22:46 +08:00
1 parent 7e3f138875
commit 05683e502a
35 files changed
+11247 -24

No files matched your search

+6
View File
@@ -84,6 +84,12 @@ Operations__MySqlClientPath=mysql
# Operations__MySqlAdditionalArguments__0=--ssl-mode=VERIFY_IDENTITY
# Operations__MySqlAdditionalArguments__1=--ssl-ca=/etc/jiaowu/mysql-ca.pem
# 签名插件包存储目录必须持久化,并仅允许服务账号写入。发布者公钥使用 RSA PEM。
Plugins__StoragePath=/var/lib/jiaowu/plugins
Plugins__MaximumPackageMegabytes=20
# Plugins__TrustedPublishers__0__Id=school-it
# Plugins__TrustedPublishers__0__PublicKeyPath=/etc/jiaowu/plugin-publishers/school-it-public.pem
Jwt__Issuer=Jiaowu.Api
Jwt__Audience=Jiaowu.Web
Jwt__Key=REPLACE_WITH_AT_LEAST_32_RANDOM_BYTES
+4
View File
@@ -1,8 +1,12 @@
<Solution>
<Folder Name="/src/">
<Project Path="src/Jiaowu.Api/Jiaowu.Api.csproj" />
<Project Path="src/Jiaowu.Plugin.Abstractions/Jiaowu.Plugin.Abstractions.csproj" />
</Folder>
<Folder Name="/tests/">
<Project Path="tests/Jiaowu.Api.Tests/Jiaowu.Api.Tests.csproj" />
</Folder>
<Folder Name="/samples/">
<Project Path="samples/Jiaowu.SamplePlugin/Jiaowu.SamplePlugin.csproj" />
</Folder>
</Solution>
+3 -1
View File
@@ -15,7 +15,9 @@
权限采用后端强制校验的角色与数据范围模型。多角色账号按 `All > College > Class > Self` 取最高数据范围:校级角色可访问全校数据,院系管理员限定本学院,辅导员通过稳定的账号 ID 绑定所带行政班,教师和学生限定本人及当前教学关系;前端菜单和路由限制仅作为交互辅助,不替代 API 授权。
系统提供统一插件平台。`SuperAdmin` 可以从“组织与权限 → 插件中心”启用或停用内置业务插件;状态变更同时作用于菜单、前端路由和对应后端 API,停用不会删除插件已有数据。插件只控制业务能力是否开放,原接口的角色与数据范围校验仍然有效。当前版本只接纳随主程序构建、经过代码审查的内置插件,不支持上传或热加载任意程序集;生产环境升级后需先执行数据库迁移,再启动新版本服务。
系统提供统一插件平台。`SuperAdmin` 可以从“组织与权限 → 插件中心”启用或停用内置业务插件;状态变更同时作用于菜单、前端路由和对应后端 API,停用不会删除插件已有数据。插件只控制业务能力是否开放,原接口的角色与数据范围校验仍然有效。生产环境升级后需先执行数据库迁移,再启动新版本服务。
插件平台同时支持经过受信任发布者 RSA-PSS/SHA-256 签名的 SDK 插件包。包上传后只进入暂存区,管理员标记激活或回滚后必须重启服务;启动时系统会再次校验签名、Host API、清单和包哈希,然后装载程序集并按事务执行插件迁移。SDK、示例插件、发布者公钥配置和打包流程见 [`docs/plugin-sdk.md`](docs/plugin-sdk.md)。不受信任的第三方代码仍不得作为进程内插件安装。
人员档案与登录账号分开维护。新增或 Excel 导入学生、教师档案时不会自动创建账号,也不会在修改档案时同步账号。学生首次使用时可以在登录页进入“自助激活”,填写姓名、学号、学院、专业、年级和行政班;全部匹配在籍档案后自行设置密码,系统才创建 Identity 登录账号并关联学生角色。`AspNetUsers` 作为 ASP.NET Core Identity 的内部安全存储,负责密码哈希、登录锁定、角色和令牌。
Loaded 3 of 35 files, more files were not shown because too many files have changed in this diff. Show more