XYGo Admin 多租户与权限体系实战:GoFrame + Vue3 企业级后台架构解析

2 阅读2分钟

XYGo Admin 是一款基于 GoFrame + Vue3 的开源企业级中后台管理系统,支持 MySQL 与 PostgreSQL 双数据库驱动。项目在多租户场景下提供了「租户专属表族」的隔离方案,与常规的单表 tenant_id 列方案不同,它将租户核心业务表(管理员、角色、菜单、部门等)与平台表在数据库层面彻底分离,从根本上杜绝了漏写查询条件导致的跨租户数据泄漏风险。

租户识别与 JWT 鉴权

请求到达后端后,租户识别中间件按以下优先级解析身份:HTTP 头 X-Tenant-Id → 域名匹配 → 已登录 JWT 中的租户 ID。解析结果为 0 则视为平台级请求,不做租户过滤。租户管理员使用独立的 Token 签发逻辑,与平台管理员 Token 互不冲突,登录路径为 /tenant/auth/login

三级权限:从菜单到字段

在 RBAC 角色权限基础上,XYGo Admin 进一步实现了按钮级和字段级控制。

按钮级权限

通过 v-auth 指令精确控制页面按钮显隐,支持单一权限标识(如 addedit)或多权限组合。指令内部从当前路由的 meta.authList 获取权限列表,无权限的元素会直接移出 DOM。同时提供 v-roles 指令按角色(如 R_SUPER)控制区域可见性。

字段级权限

通过 admin_field_perm 表配置不同角色对数据字段的访问级别:可见、可编辑、隐藏。后端在查询与更新操作中自动过滤字段,适合敏感数据保护场景。

多租户 + 权限的协同

租户套餐(xy_tenant_group)关联菜单授权表(xy_tenant_group_menu),决定该套餐下可访问的菜单范围。结合角色与按钮权限,不同租户的菜单、角色、权限模型可独立演进,互不干扰。

快速启动

git clone https://gitee.com/a751300685a/xygo-admin.git
cd xygoadmin

# 后端
cd server && gf run main.go

# 前端
cd web && pnpm install && pnpm dev

默认超级管理员账号 admin / 123456。项目内置 CRUD 代码生成器,通过可视化建表 + 一键生成 Go 后端与 Vue 前端页面,自动注册路由与菜单,大幅降低中后台开发成本。

更多技术细节与最新文档请查阅 XYGo Admin 官方开发文档