# 资源与权限(动态路由 + 页面/API 控制)
G2rain 在“路由与权限”上采用资源驱动模式:后端维护资源配置,前端启动时加载资源并生成路由,同时根据页面元素/API 端点权限控制 UI 与请求行为。
# Boot 模块职责
Boot 模块在应用启动阶段完成:
- 资源加载:读取页面、页面元素、API 端点资源
- 路由生成:把资源映射为 Vue Router 的动态路由,并支持组件按路径懒加载
- 权限系统:把权限校验能力注册到前端(页面元素与 API 权限)
# 资源模型(Resource)
后端资源通常包含三类:
ResourcePage:资源页面表(linkPath决定路由路径,pageCode用于权限关联)ResourcePageElement:页面元素表(按钮/菜单等操作项,pageElementCode用于权限点)ResourceApiEndpoint:接口地址表(apiUrl+requestMethod用于 API 权限匹配)
# 资源加载与路由生成流程
典型流程(前端启动):
- 调用
initApplicationResources()初始化资源(依赖环境变量VITE_APPLICATION_CODE) - 请求资源接口(示例:
GET /basis/auth/resource) - 解析资源数据:
pages / pageElements / apiEndpoints - 生成路由:根据
linkPath自动映射组件路径 - 注册权限插件:启用页面元素权限与 API 权限校验
# 页面元素权限(v-permission)
页面元素权限常见两种状态:
enabled:显示且可点击(默认)visible:仅显示但不可点击(禁用状态)
页面侧使用指令控制:
<el-button v-permission="'user:add'">新增</el-button>
# API 权限(HTTP 拦截器)
API 权限检查在 HTTP 拦截器中自动完成:
- 请求发起前校验权限
- 不满足则抛出
API_PERMISSION_DENIED
如果你需要写“权限配置如何生成/如何同步到后端数据库”的官网章节,我可以在下一轮把模板里的 build:config 输出字段与后端资源表字段做对照补齐。