system_menu 与 app_menu 说明
system_menu 和 app_menu 都是中间件菜单清单,但服务对象不同。下游项目必须在接入资料和菜单初稿里明确 PCWEB 与 APP / 小程序分别需要哪些页面、动作和接口授权。
system_menu
- 面向 PCWEB 管理端。
- 用于 PCWEB 运行态菜单、动态路由、页面权限、按钮权限和默认页。
- PCWEB 通过
clsdk-pcweb读取运行态菜单,并通过registerPage把pageCode对应到本地组件。
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"
}
]
}
]
}发布与授权
- 上传菜单清单。
- 提交菜单版本。
- 发布菜单版本。
- 给角色授权页面和动作。
- 确认
grantApis已进入角色 Casbin。 - 前端重新拉取运行态菜单或重建 runtime。
- 后端用同一组
resource/action做CheckPermission。
常见误区
- PCWEB 有
system_menu不代表 APP / 小程序自动有app_menu。 - APP / 小程序有
app_menu不代表 PCWEB 自动有system_menu。 - 页面可见不代表按钮可见。
- 按钮可见不代表接口可调用,接口最终由后端
CheckPermission判断。