『7x24小时有问必答』

前言

后台管理系统是绝大多数 Web 应用的基础,但每次从头搭建认证、权限、菜单这些基础设施,既耗时又容易踩坑。有没有一套开箱即用的方案,能把重复工作交给工具,让我们把精力放在业务本身?

项目介绍

一套基于 Go(Gin)和 Vue.js 的全栈管理框架,前后端完全分离。它不是为了炫技而生的脚手架,而是真正在生产环境被验证过的企业级解决方案。
简单说,它的目标就是帮我们又快又稳地搭起后台管理应用。从用户登录、权限控制,到菜单管理、API 配置,再到代码自动生成,这套框架把后台开发中最常见、最重复的工作都封装好了。不管是要做一个简单的 CMS,还是复杂的企业级 SaaS 后台,它都能撑得住。
在线演示: http://demo.gin-vue-admin.com/ (用户名: admin / 密码: 123456)

项目架构

系统架构图

前端详细设计

项目功能

覆盖了后台管理系统开发中几乎所有的高频场景:
功能模块
具体说明
用户管理
系统管理员分配用户角色和权限,支持多角色关联
角色管理
基于 Casbin 的 RBAC 权限模型,支持 API、菜单、按钮三级权限分配
菜单管理
动态菜单配置,不同角色登录后看到完全不同的菜单树
API 管理
接口级别的访问控制,可精确到每一个 RESTful 接口
按钮权限
页面内按钮的显隐控制,细粒度权限管理
AutoCode 代码生成
选择数据表,1 分钟内生成完整的 CRUD 前后端代码
表单生成器
基于 Variant Form 的可视化拖拽表单设计
文件存储系统
支持本地、七牛云、阿里云 OSS、腾讯云、AWS S3 等多种存储
分片上传与断点续传
大文件上传场景下的必备能力
配置管理
系统配置可视化修改,无需重启服务
日志管理
操作日志、系统日志的记录与检索
数据字典
系统枚举值、状态码的统一管理维护
插件中心
支持插件化扩展,已有微信集成、K8s 操作等官方插件

项目特点

特点
描述
前后端完全分离
前端 Vue 3 + 后端 Go Gin,通过 RESTful API 通信,便于团队分工和独立部署
自动化代码生成
真正的生产效率工具,CRUD 代码一键生成,减少 80% 的重复编码工作
双重安全认证
JWT 做身份认证,Casbin 做权限管理,两者配合覆盖了从登录到接口访问的全链路安全
动态路由与菜单
路由和菜单由后端数据驱动,权限变化实时反映在前端界面上
多数据库支持
同时支持 MySQL、PostgreSQL、SQLite、MSSQL、Oracle,技术选型不受限
多云存储适配
文件存储层做了抽象,切换云服务商只需改一行配置
完善的文档
Swagger 自动生成 API 文档,项目本身就是一个完整的最佳实践范例
AI 辅助开发
集成 LLM API 和 MCP 协议,可以在代码生成过程中获得 AI 辅助,这在国内开源后台框架中并不多见

项目技术

前端技术栈

技术
版本
作用
Vue.js
3.3.4
渐进式 UI 框架,组合式 API 写得非常舒服
Element Plus
2.3.8
成熟的组件库,后台管理界面首选
Pinia
Latest
Vue 官方推荐的状态管理,比 Vuex 轻量且类型友好
Vue Router
Latest
配合后端动态路由实现菜单权限控制
Vite
Latest
极速的构建工具,开发体验很丝滑

后端技术栈

技术
版本
作用
Go
≥ 1.22
高性能、并发友好,非常适合后端服务
Gin
1.9.1
轻量而高效的 Web 框架,路由和中间件设计很优雅
GORM
1.25.2
功能强大的 ORM,支持自动迁移和多种数据库
Casbin
Latest
访问控制库,支持 ACL、RBAC 等多种权限模型
Viper
Latest
配置管理,支持多种配置源和热加载
Zap
Latest
高性能的结构化日志库
Redis
Latest
缓存与会话管理
Swagger
Latest
API 文档自动生成,前后端联调的好帮手

环境要求

Node.js: ≥ 20.19 或 ≥ 22.12
Go: ≥ 1.22
MySQL: ≥ 5.7(引擎必须为 InnoDB)
推荐用 Docker 跑 MySQL,省去环境不一致的烦恼
整个技术选型给人的感觉就是:主流、务实、不折腾。没有用冷门的框架,也没有过度封装,熟悉 Vue 和 Go 的人基本都能无缝上手。

项目代码

项目采用清晰的分层架构:
├── server/                        # 后端代码(Go)

│    ├── api/v1/                 # 控制器层,处理 HTTP 请求

│    ├── service/               # 业务逻辑层

│    ├── model/                  # 数据模型层

│    ├── middleware/           # JWT、Casbin、日志等中间件

│    ├── router/                 # 路由注册

│    ├── core/                    # 配置、日志、数据库等核心初始化

│    └── global/                 # 全局变量

├── web/                             # 前端代码(Vue)

│    ├── src/

│    │    ├── api/               # 接口请求封装

│    │    ├── views/            # 页面视图

│    │    ├── components/     # 通用组件

│    │    ├── store/            # Pinia 状态管理

│    │    └── router/           # 动态路由配置

│    └── vite.config.js      # Vite 构建配置

└── docker-compose.yaml      # 一键启动所有服务

简单看一下登录接口的代码组织方式:
路由注册 (router/system/sys_user.go):
func  (r *Router)  InitUserRouter(router *gin.RouterGroup)  {

      userApi := api.NewUserApi()

      group := router.Group("user")

      {

            group.POST("login", userApi.Login)   // 登录接口

      }

}

控制器 (api/v1/system/sys_user.go):
func  (u *UserApi)  Login(c *gin.Context)  {

       var  req model.LoginRequest

      _ = c.ShouldBindJSON(&req)

      

       // 调用服务层验证用户名密码

      user, token, err := service.UserServiceApp.Login(req)

       if  err !=  nil  {

            c.JSON(400, gin.H{"code":  400,  "msg": err.Error()})

             return

      }

      c.JSON(200, gin.H{"code":  0,  "data": token,  "msg":  "登录成功"})

}

前端调用这部分接口也很规整,api  目录下统一管理所有接口,配合 Pinia 存储用户状态和 Token,登录流程清晰明了。
代码生成器的逻辑稍微复杂一些,但核心就是读取数据库表结构 → 解析字段类型 → 渲染前后端模板 → 输出完整代码文件。整个过程在本地运行,生成的代码可以直接复制到项目中用,也可以按需二次修改。

项目效果

新建一张业务表 + 生成 CRUD 代码:大概 1 到 2 分钟
配置菜单和 API 权限:3 到 5 分钟在界面里点选完成
从零到一跑起来一个带登录、权限、菜单的后台:半小时以内

说几个我比较喜欢的体验细节:
第一是权限控制的粒度。菜单、API、按钮三个维度分开配置,灵活度很高。比如可以做到"销售角色能看到订单列表但看不到导出按钮,运营角色能看到全部但只能导出 CSV 格式"这种精细控制。
第二是动态菜单的流畅度。菜单数据由后端返回,前端动态渲染。角色切换后菜单实时变化,不需要重新登录。
第三是代码生成的可编辑性。生成的代码不是黑盒子,就是普通的控制器 + 服务 + 前端页面文件,想改哪就改哪,没有框架锁定感。

项目源码

项目完全开源,托管在多个代码平台,可以根据自己的网络情况选择:
平台
地址
GitHub
https://github.com/flipped-aurora/gin-vue-admin
GitCode
https://gitcode.com/flipped-aurora/gin-vue-admin
Gitee
https://gitee.com/pixelmax/gin-vue-admin
本地运行只需要三步:
# 1. 克隆代码

git  clone  https://github.com/flipped-aurora/gin-vue-admin.git

# 2. 启动后端(进入 server 目录)

go mod tidy && go run main.go

# 3. 启动前端(进入 web 目录)

pnpm install && pnpm dev

如果用 Docker,一条  docker-compose up -d  就能把 MySQL + Redis + 后端 + 前端全部跑起来,非常方便。

总结

项目整体印象是八个字:扎实、全面、克制、实用
它没有追求大而全的"中台化"抽象,而是把后台开发中最频繁遇到的场景——登录、权限、菜单、CRUD、文件上传、配置管理——都老老实实地做了出来,而且做得足够好用。
AutoCode 的代码生成能力解决了效率问题,JWT + Casbin 的权限组合解决了安全问题,多数据库和多云存储的支持解决了企业场景的适配问题。而 AI 辅助开发的探索则为这个框架增加了面向未来的想象力。
如果正准备做一个后台管理系统,或者想找一个 Go + Vue 的全栈学习项目,值得花一两个晚上跑起来试一试。光是研究它的代码生成器和权限设计,就能学到不少东西。

关键词

Go、Vue.js、全栈框架后台管理系统RBAC权限、JWT认证、AutoCode代码生成、Casbin、GORM、Element Plus、动态路由、企业级开发
作者:小码编匠
出处:gitee.com/smallcore/DotNetCore
声明:网络内容,仅供学习,尊重版权,侵权速删,歉意致谢!

END

备注【开源
方便大家交流、资源共享和共同成长
纯技术交流群、需要的小伙伴请扫码

有收获?不妨分享让更多人受益
关注「程序员开源栈」,共同提升技术实力

点分享
点收藏
点在看
点点赞

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

上一主题上一主题         下一主题下一主题
QQ手机版小黑屋粤ICP备17165530号

关于我们·投诉举报· 用户帮助· 联系我们 · 本站服务 · 版权声明· 隐私政策 · 投搞指南

法律保护:PLC技术网,plcjs.com,plcjs.net等字样
Copyright 2010-2030. All rights reserved. 


微信公众号二维码 抖音二维码 百家号二维码 今日头条二维码哔哩哔哩二维码