# 资源与权限(动态路由 + 页面/API 控制)

G2rain 在“路由与权限”上采用资源驱动模式:后端维护资源配置,前端启动时加载资源并生成路由,同时根据页面元素/API 端点权限控制 UI 与请求行为。

# Boot 模块职责

Boot 模块在应用启动阶段完成:

  • 资源加载:读取页面、页面元素、API 端点资源
  • 路由生成:把资源映射为 Vue Router 的动态路由,并支持组件按路径懒加载
  • 权限系统:把权限校验能力注册到前端(页面元素与 API 权限)

# 资源模型(Resource)

后端资源通常包含三类:

  1. ResourcePage:资源页面表(linkPath 决定路由路径,pageCode 用于权限关联)
  2. ResourcePageElement:页面元素表(按钮/菜单等操作项,pageElementCode 用于权限点)
  3. ResourceApiEndpoint:接口地址表(apiUrl + requestMethod 用于 API 权限匹配)

# 资源加载与路由生成流程

典型流程(前端启动):

  1. 调用 initApplicationResources() 初始化资源(依赖环境变量 VITE_APPLICATION_CODE
  2. 请求资源接口(示例:GET /basis/auth/resource
  3. 解析资源数据:pages / pageElements / apiEndpoints
  4. 生成路由:根据 linkPath 自动映射组件路径
  5. 注册权限插件:启用页面元素权限与 API 权限校验

# 页面元素权限(v-permission)

页面元素权限常见两种状态:

  • enabled:显示且可点击(默认)
  • visible:仅显示但不可点击(禁用状态)

页面侧使用指令控制:

<el-button v-permission="'user:add'">新增</el-button>

# API 权限(HTTP 拦截器)

API 权限检查在 HTTP 拦截器中自动完成:

  • 请求发起前校验权限
  • 不满足则抛出 API_PERMISSION_DENIED

如果你需要写“权限配置如何生成/如何同步到后端数据库”的官网章节,我可以在下一轮把模板里的 build:config 输出字段与后端资源表字段做对照补齐。