status: apply created: 2026-07-21 complexity: 🟢简单 change:
business-application-runtime-route-permission
点击应用工作台“进入应用”会跳转到 /app-center/application/:applicationCode/runtime,但前端权限守卫将该地址重定向至 /403。本变更通过 Flyway 注册运行页隐藏资源并继承已有“查看业务应用”角色授权,使具备应用查看权限的用户可正常进入运行页。
forge-admin-ui/src/router/index.js 已注册 BusinessApplicationRuntime,路径为 /app-center/application/:applicationCode/runtime,组件为 application-runtime.[applicationCode].vue。application.[applicationCode].vue 的 openApplicationRuntime() 已跳转到该命名路由。router/guards/permission-guard.js 的 canAccessRoute(...) 要求目标路径匹配后端菜单下发的 accessRoutes,不匹配即跳转 /403。V1.0.30__add_business_application_workspace_route.sql 已为工作台路径写入隐藏资源及角色绑定;V1.0.34__add_business_application_preview_route.sql 对预览路径做了同类处理。forge-server/db/migration/ 中不存在 runtime 路径的资源迁移,故菜单树不包含该路由。/app-center/application/:applicationCode/runtime,组件路径与前端手写路由一致。ai:businessApplication:runtime 权限码,避免与已有资源触发唯一索引冲突。ai:businessApplication:list 的角色才继承 ai:businessApplication:runtime 运行页资源。permission-guard。| 操作 | 表名 | 字段/索引 | 说明 |
|---|---|---|---|
| 新增/补齐 | sys_resource |
隐藏路由资源 | 注册应用运行页到权限路由树 |
| 新增/补齐 | sys_role_resource |
角色-资源绑定 | 从 ai:businessApplication:list 已授权角色继承 |
无。复用现有菜单获取和应用工作台接口。
forge-server/db/migration/V1.0.50__add_business_application_runtime_route.sql不修改 Java、Vue、路由守卫、动态 CRUD 或全局白名单。
/app-center/application/** 的前端路由白名单。1.0.50 迁移历史,修正脚本后必须先执行 Flyway repair;否则应用仍会因失败记录阻断启动。ai:businessApplication:list,并已继承 ai:businessApplication:runtime,以及 Flyway 是否执行成功。NOT EXISTS 幂等、tenant_id=1、无 ${...} Flyway 占位符。/403;无查看权限用户仍应无法访问。execution-log.md。无。用户于 2026-07-21 明确授权开始修复。
沿用 V1.0.30/V1.0.34 的隐藏资源模式,将运行页作为手写动态路由注册到 sys_resource。运行页使用独立权限码避免资源唯一索引冲突,但角色授权从既有查看权限继承;不修改前端权限守卫。
见 execution-log.md。
V1.0.50 唯一、新资源路径/组件/独立运行页权限码一致、资源与角色绑定均有 NOT EXISTS 保护、无 Flyway ${...} 占位符、无新增 tenant_id=0。1.0.50,再由用户启动 Admin/Flyway 后重新登录,验证拥有和不拥有 ai:businessApplication:list 的角色边界。