Skip to content

常见问题排查

排查时应先确认问题属于中间件配置、菜单发布、角色授权、前端运行态、后端接口校验还是依赖版本。未定位原因前,不得通过隐藏错误、空数据或临时绕权兜底。

菜单没有出现

  • 确认菜单清单已上传。
  • 确认菜单版本已发布。
  • 确认当前角色已授权。
  • 确认 PCWEB 使用 system_menu,APP / 小程序使用 app_menu
  • 确认前端登录后已 rebuild runtime 或重新拉取菜单。

默认页为空

  • 确认中间件已配置默认页。
  • 确认默认页对应菜单已发布。
  • 确认当前角色有默认页权限。
  • PCWEB 确认使用 runtime.defaultRoute,不得直接拼接接口原始字段。

页面 404

  • PCWEB 确认 registerPage 已注册对应 pageCode
  • 确认 routePath 与本地路由适配一致。
  • 确认组件路径存在且构建能解析。
  • APP / 小程序确认页面路径已在项目页面配置中注册。

按钮不显示

  • 确认菜单中存在对应 actionCode
  • 确认当前角色已授权该动作。
  • 确认前端使用同一个 actionCode 调用 canAction 或按钮权限组件。
  • 确认不是只授权了页面 .view

按钮显示但接口无权限

  • 确认 actionCode 下配置了 grantApis
  • 确认 grantApis.resource 与后端接口路径一致。
  • 确认 grantApis.action 与 HTTP 方法一致。
  • 确认角色授权后 Casbin 已生效。
  • 确认后端 CheckPermission 使用同一组 Resource / Action

PCWEB 有权限但 APP 无权限

  • PCWEB 使用 system_menu,APP / 小程序使用 app_menu,两者不是同一份运行态菜单。
  • 确认 app_menu 已上传、发布并授权。
  • 确认 APP / 小程序 runtime provider 获取的是应用菜单权限。

APP 有菜单但接口无权限

  • 菜单展示只证明页面或动作可见。
  • 确认动作下的 grantApis 已配置。
  • 确认角色授权后的 grantApis 已进入 Casbin。
  • 确认后端写接口执行了 CheckPermission

grantApis 配了但 Casbin 没生效

  • 确认菜单版本已发布。
  • 确认角色授权已保存。
  • 确认授权的是当前登录上下文中的角色。
  • 重新登录或重建运行态后再验证。
  • 用有权限和无权限角色分别验证接口结果。

pageCode / actionCode 前后不一致

  • 以菜单 JSON 为准统一前端和后端口径。
  • PCWEB registerPage 使用菜单中的 pageCode
  • 前端按钮判断使用菜单中的 actionCode
  • 后端接口权限使用菜单 grantApisresource/action

前端误用了 SystemKey / PermanentKey

  • 立即从前端配置、源码、构建产物和提交记录中移除。
  • 改由后端通过 clsdk-go 保存并使用服务态密钥。
  • 前端只保留 app-idaddons-typex-token 等用户态上下文。
  • 如果密钥已经外泄,按内部安全流程轮换密钥。

正式项目误用了本地 replace / file:

  • 后端删除 go.mod 中正式不允许提交的本地 replace
  • PCWEB 和 APP / 小程序删除 package.json 中正式不允许提交的本地 file: 依赖。
  • 改为 Gitee tag 依赖。
  • 重新安装依赖并运行项目构建。

CL 正式文档平台