权限闭环与 Casbin 说明
权限闭环指“菜单声明、角色授权、Casbin 生效、前端展示、后端接口校验”完整打通。只完成其中一环不能算正式验收通过。
闭环路径
- 菜单清单声明
pageCode、actionCode、grantApis。 - 中间件上传并发布
system_menu或app_menu。 - 角色授权页面和动作。
- 中间件将授权后的
grantApis写入角色 Casbin。 - PCWEB / APP / 小程序根据运行态菜单控制页面和按钮展示。
- 下游后端在写接口中调用
clsdk-go的CheckPermission。 - 中间件按当前 token 对应角色的 Casbin 判断是否允许访问接口。
必须明确
- PCWEB 使用
system_menu。 - APP / 小程序使用
app_menu。 pageCode控制页面识别。actionCode控制按钮或业务动作识别。grantApis控制接口权限。- 菜单发布和角色授权后,
grantApis应进入角色 Casbin。 - 前端页面权限和按钮权限不能替代后端接口权限。
- 后端写接口最终必须通过
clsdk-go CheckPermission校验。 - 只做页面
.view权限不算完成按钮和接口权限闭环。
后端校验原则
- 查询接口按业务风险决定是否只校验登录态或额外校验权限。
- 新增、编辑、删除、启停、发布等写接口必须校验权限。
- 无权限必须返回明确错误。
- 不允许静默返回成功、空列表或默认数据。
前端展示原则
- 页面权限决定页面是否可见或可进入。
- 按钮权限决定按钮、操作入口或业务动作是否展示。
- 权限不足时给出明确提示。
- 前端展示只是用户体验层,不能作为安全边界。
验收判断
一个动作通过验收,至少要证明:
- 菜单中存在对应
actionCode。 actionCode下存在对应grantApis。- 角色已授权该动作。
- 有权限用户可以看到按钮并成功调用接口。
- 无权限用户看不到按钮,直接调用接口也失败。
- 后端日志或接口结果能证明
CheckPermission生效。