Skip to content

权限闭环与 Casbin 说明

权限闭环指“菜单声明、角色授权、Casbin 生效、前端展示、后端接口校验”完整打通。只完成其中一环不能算正式验收通过。

闭环路径

  1. 菜单清单声明 pageCodeactionCodegrantApis
  2. 中间件上传并发布 system_menuapp_menu
  3. 角色授权页面和动作。
  4. 中间件将授权后的 grantApis 写入角色 Casbin。
  5. PCWEB / APP / 小程序根据运行态菜单控制页面和按钮展示。
  6. 下游后端在写接口中调用 clsdk-goCheckPermission
  7. 中间件按当前 token 对应角色的 Casbin 判断是否允许访问接口。

必须明确

  • PCWEB 使用 system_menu
  • APP / 小程序使用 app_menu
  • pageCode 控制页面识别。
  • actionCode 控制按钮或业务动作识别。
  • grantApis 控制接口权限。
  • 菜单发布和角色授权后,grantApis 应进入角色 Casbin。
  • 前端页面权限和按钮权限不能替代后端接口权限。
  • 后端写接口最终必须通过 clsdk-go CheckPermission 校验。
  • 只做页面 .view 权限不算完成按钮和接口权限闭环。

后端校验原则

  • 查询接口按业务风险决定是否只校验登录态或额外校验权限。
  • 新增、编辑、删除、启停、发布等写接口必须校验权限。
  • 无权限必须返回明确错误。
  • 不允许静默返回成功、空列表或默认数据。

前端展示原则

  • 页面权限决定页面是否可见或可进入。
  • 按钮权限决定按钮、操作入口或业务动作是否展示。
  • 权限不足时给出明确提示。
  • 前端展示只是用户体验层,不能作为安全边界。

验收判断

一个动作通过验收,至少要证明:

  • 菜单中存在对应 actionCode
  • actionCode 下存在对应 grantApis
  • 角色已授权该动作。
  • 有权限用户可以看到按钮并成功调用接口。
  • 无权限用户看不到按钮,直接调用接口也失败。
  • 后端日志或接口结果能证明 CheckPermission 生效。

CL 正式文档平台