XYGo Admin 权限与代码生成实战:一套 RBAC 搞定前后端全链路

5 阅读3分钟

XYGo Admin 权限与代码生成实战:一套 RBAC 搞定前后端全链路

之前一直在用某个 vue3 后台管理框架做中后台项目,权限模块总是"半自动"——菜单靠手写路由,按钮权限要自己封装指令,字段级控制更是想都不敢想。直到换上 XYGo Admin 这套基于 GoFrame 的敏捷后台开发框架,才发现权限与 CRUD 可以是一条链路自动走完的


三级权限:从菜单到字段,粒度够细

XYGo Admin 的权限体系分三层,每一层都有对应的自动化支持:

1. RBAC 角色权限

角色分为 R_SUPER(超管,免校验直接放行)、R_ADMIN(普通管理员,权限由分配的菜单决定),还能创建自定义角色。管理员在后台勾选菜单树 → 分配角色给用户 → 用户登录后后端返回可访问菜单 → 前端根据列表动态注册路由。

这里的关键是路由注册全自动RouteTransformer 把后端菜单 JSON 转成 Vue Router 配置,RouteRegistry 动态挂载,路由守卫 beforeEach 拦截未登录 / 未加载动态路由的情况。不需要手写 router.addRoute 那堆样板代码。

2. 按钮级权限

v-auth 指令控制按钮显隐:

<ElButton v-auth="'add'" type="primary">新增</ElButton>
<ElButton v-auth="['edit', 'update']" type="primary">编辑</ElButton>

指令从当前路由的 meta.authList 取权限列表,匹配不上就直接从 DOM 移除元素。还提供了 v-roles 按角色控制,比如 v-roles="'R_SUPER'" 让超管专属内容只对特定角色可见。

3. 字段级权限

在后台「字段权限」管理里,可以按模块 + 字段配置每个角色是「可见」「可编辑」还是「隐藏」。后端通过 admin_field_perm 表存储配置,查询和更新时自动过滤字段——敏感字段对低权限角色直接不可见。


CRUD 代码生成:表 → 前后端代码,一步到位

这是 XYGo Admin 最能打的功能。导航到「开发工具 → 代码生成」,两种方式建表:

  • 选已有表:下拉选表,系统自动读结构
  • 可视化建表:在线设计器设字段、类型、索引,系统自动执行 DDL

然后系统智能推断每个字段的展示类型(designType):input / textarea / number / select / switch / date / editor / image / remoteSelect 等。如果有 parent_id 字段还会自动识别为树形结构。

点击「生成」后,一键输出

文件
Go 后端api/admin/xxx.go + controller/admin/xxx.go + logic/xxx/xxx.go
Vue 前端api/backend/xxx.ts + views/backend/xxx/index.vue + 编辑弹窗
数据库菜单 SQL(自动插入菜单和权限数据)

生成完跑 gf gen dao && gf gen service,重启后端即可生效。菜单、路由、权限全部自动注册,不用补任何胶水代码。


为什么说它"全链路自动"

传统 vue3 后台管理系统框架的痛点是:CRUD 生成器和权限系统是两套东西,生成完代码还得回去配菜单、加路由、绑权限。XYGo Admin 的做法是把它们焊在一起——代码生成时自动写菜单 SQL、自动注册路由、自动关联 RBAC 权限。从建表到能用的管理页面,中间不需要手动干预。

对于团队来说,这意味着新人上手快、老手搬砖少。作为基于 GoFrame 开发的后台管理系统,后端用 GoFrame v2 + JWT 认证,前端是 Vue 3 + TypeScript + Element Plus + Tailwind CSS,技术栈本身也够主流。


小结

XYGo Admin 把权限和 CRUD 做成了一条龙:表结构 → 代码生成 → 菜单/路由/权限自动注册 → RBAC 三级管控。v-auth 指令、v-roles 指令、字段级权限 admin_field_perm 表,这些不是"文档里的功能",而是生成完就能直接用。

如果你的团队还在手搓后台 CRUD + 权限,值得去官网看一眼。