Skip to content

system_menu 与 app_menu 说明

system_menuapp_menu 都是中间件菜单清单,但服务对象不同。下游项目必须在接入资料和菜单初稿里明确 PCWEB 与 APP / 小程序分别需要哪些页面、动作和接口授权。

system_menu

  • 面向 PCWEB 管理端。
  • 用于 PCWEB 运行态菜单、动态路由、页面权限、按钮权限和默认页。
  • PCWEB 通过 clsdk-pcweb 读取运行态菜单,并通过 registerPagepageCode 对应到本地组件。

app_menu

  • 面向 APP / 小程序 / uni-app。
  • 用于移动端应用菜单、页面展示、动作权限和接口授权。
  • APP / 小程序通过 clsdk-clapp 的 runtime provider 获取应用菜单权限。

两类菜单都要关注的字段

  • pageCode:页面识别码。
  • title:菜单展示名称。
  • routePath:页面路由或业务页面路径。
  • actions:页面下按钮或业务动作。
  • actionCode:动作识别码。
  • grantApis:动作授权关联的接口资源。

demo 菜单 JSON 示例

json
{
  "pageCode": "demo.rule.list",
  "title": "规则管理",
  "routePath": "/demo/rule/list",
  "actions": [
    {
      "actionCode": "demo.rule.create",
      "title": "新增规则",
      "grantApis": [
        {
          "resource": "/demo/platform/rule/create",
          "action": "POST"
        }
      ]
    }
  ]
}

发布与授权

  1. 上传菜单清单。
  2. 提交菜单版本。
  3. 发布菜单版本。
  4. 给角色授权页面和动作。
  5. 确认 grantApis 已进入角色 Casbin。
  6. 前端重新拉取运行态菜单或重建 runtime。
  7. 后端用同一组 resource/actionCheckPermission

常见误区

  • PCWEB 有 system_menu 不代表 APP / 小程序自动有 app_menu
  • APP / 小程序有 app_menu 不代表 PCWEB 自动有 system_menu
  • 页面可见不代表按钮可见。
  • 按钮可见不代表接口可调用,接口最终由后端 CheckPermission 判断。

CL 正式文档平台