MiniAdmin 项目
mini-adminmini-admin是一个基于Spring Boot 3 Vue 3 Element Plus的前后端分离 MiniAdmin 管理平台示例项目MIT协议。项目适合用于学习权限系统设计也可以作为中小型后台管理系统的基础脚手架、及商用。本工程包版本mini-admin X1.0是在 mini-rbac 开源项目上进行功能持续开发。MiniAdmin 项目开源地址https://gitee.com/xbjct/mini-admin项目简介平台围绕用户、角色、资源三类核心对象设计用户 N —— N 角色 N —— N 资源资源支持目录、菜单和按钮权限。前端根据登录用户的菜单权限动态生成路由根据按钮权限控制页面操作后端通过 Spring Security 对接口进行权限校验避免只依赖前端隐藏按钮造成越权风险。功能特性用户登录、刷新 Token、退出登录Access Token Refresh Token 登录机制用户管理新增、修改、删除、启用、禁用、锁定、重置密码、分配角色角色管理新增、修改、删除、启用、禁用、复制角色、分配资源资源管理目录、菜单、按钮权限维护数据字典字典类型、字典项 CRUD业务状态下拉框和标签统一从字典读取动态菜单与动态路由前端按钮权限指令v-permission后端接口权限校验PreAuthorize在线用户与强制退出登录日志、操作日志Demo 客户管理 CRUDtb_clientFlyway 数据库版本管理MyBatis-Plus 持久层开发规范统一响应模型、分页模型、异常处理后端类注释已按开源规范补充技术栈后端mini-admin-server技术版本 / 说明JDK21Spring Boot3.2.4Spring Security接口鉴权MyBatis-Plus3.5.7Flyway数据库迁移MySQL8.xRedis会话与权限缓存Maven后端构建前端mini-admin-ui技术版本 / 说明Node.js24.xVue3TypeScript前端开发语言Element PlusUI 组件库Pinia状态管理Vue Router路由管理Vite前端构建工具AxiosHTTP 请求项目结构mini-admin/ ├── mini-admin-server/ 后端工程 │ ├── src/main/java/com/junjiu/mini/rbac/ │ │ ├── MiniAdminApplication.java 启动类 │ │ ├── common/ 通用响应、异常等基础能力 │ │ ├── framework/ 安全、审计、配置等框架层能力 │ │ └── module/ 业务模块 │ │ ├── system/ 系统管理模块 │ │ └── demo/ Demo 业务模块 │ └── src/main/resources/ │ ├── db/migration/ Flyway 数据库脚本 │ ├── mapper/ MyBatis XML Mapper │ └── application.yml 后端配置 ├── mini-admin-ui/ 前端工程 │ ├── src/api/ 请求接口 │ ├── src/router/ 路由配置 │ ├── src/stores/ Pinia 状态 │ ├── src/views/ 页面 │ └── src/directives/ 权限指令 ├── scripts/ 启动脚本 ├── docs/ 项目文档 ├── README.md Gitee 展示文档 └── README.td 备用说明文档后端包结构规范后端根包com.junjiu.mini.rbac推荐包结构com.junjiu.mini.rbac ├── common │ ├── exception 业务异常、全局异常处理 │ └── response 统一响应、分页响应 ├── framework │ ├── audit 操作日志注解与切面 │ ├── config Spring Security、MyBatis-Plus 配置 │ └── security JWT、当前用户、权限缓存 └── module ├── system 系统管理模块 └── demo Demo 示例业务模块后续新增业务统一放到com.junjiu.mini.rbac.module.业务名.controller com.junjiu.mini.rbac.module.业务名.dto com.junjiu.mini.rbac.module.业务名.entity com.junjiu.mini.rbac.module.业务名.mapper com.junjiu.mini.rbac.module.业务名.service例如订单业务com.junjiu.mini.rbac.module.order.controller com.junjiu.mini.rbac.module.order.dto com.junjiu.mini.rbac.module.order.entity com.junjiu.mini.rbac.module.order.mapper com.junjiu.mini.rbac.module.order.service菜单规划系统管理 ├── 用户管理 ├── 角色管理 ├── 资源管理 ├── 数据字典 └── 在线用户 审计日志 ├── 登录日志 └── 操作日志 Demo管理 └── 客户管理Demo 客户管理Demo 业务用于给后续业务开发提供参考。数据库表tb_client后端模块com.junjiu.mini.rbac.module.demo前端页面Demo管理 - 客户管理接口GET /api/demo/clients POST /api/demo/clients GET /api/demo/clients/{id} PUT /api/demo/clients/{id} DELETE /api/demo/clients/{id}权限编码demo:client:list demo:client:create demo:client:update demo:client:delete环境要求环境要求JDK21 或以上Maven3.9 或以上Node.js24.xMySQL8.xRedis6.x 或以上初始化数据库后端使用 Flyway 自动建表和初始化数据脚本位于mini-admin-server/src/main/resources/db/migration/当前迁移脚本V1__init_schema.sql V2__seed_data.sql V3__demo_client_and_menu_adjustment.sql V4__data_dictionary.sql首次启动时会自动创建表并写入基础菜单、角色、权限和管理员账号。默认管理员账号用户名admin 密码Admin123生产环境请首次登录后立即修改默认密码。配置说明application.yml已改为适合开源发布的安全默认配置默认连接本机 MySQL 和 Redis不在仓库中写入真实服务器地址和密码。spring:datasource:url:${DB_URL:jdbc:mysql://127.0.0.1:3306/mini_admin?createDatabaseIfNotExisttrueuseUnicodetruecharacterEncodingutf8serverTimezoneAsia/ShanghaiallowPublicKeyRetrievaltrueuseSSLfalse}username:${DB_USERNAME:root}password:${DB_PASSWORD:}data:redis:host:${REDIS_HOST:127.0.0.1}port:${REDIS_PORT:6379}password:${REDIS_PASSWORD:}如果需要连接自己的服务器请通过环境变量覆盖不建议把真实账号密码提交到 Gitee。Linux / macOS 示例exportDB_URLjdbc:mysql://MYSQL_HOST:3306/mini_admin?createDatabaseIfNotExisttrueuseUnicodetruecharacterEncodingutf8serverTimezoneAsia/ShanghaiallowPublicKeyRetrievaltrueuseSSLfalseexportDB_USERNAMEMYSQL_USERNAMEexportDB_PASSWORDMYSQL_PASSWORDexportREDIS_HOSTREDIS_HOSTexportREDIS_PORT6379exportREDIS_PASSWORDREDIS_PASSWORDexportJWT_SECRET请替换为至少32位的随机密钥Windows PowerShell 示例$env:DB_URL jdbc:mysql://MYSQL_HOST:3306/mini_admin?createDatabaseIfNotExisttrueuseUnicodetruecharacterEncodingutf8serverTimezoneAsia/ShanghaiallowPublicKeyRetrievaltrueuseSSLfalse$env:DB_USERNAME MYSQL_USERNAME$env:DB_PASSWORD MYSQL_PASSWORD$env:REDIS_HOST REDIS_HOST$env:REDIS_PORT 6379$env:REDIS_PASSWORD REDIS_PASSWORD$env:JWT_SECRET 请替换为至少32位的随机密钥后端启动进入后端目录cdmini-admin-server mvn clean spring-boot:run或使用脚本bashscripts/run-backend.shWindows PowerShell.\scripts\run-backend.ps1后端默认地址http://localhost:8080健康检查http://localhost:8080/actuator/health前端启动进入前端目录cdmini-admin-uinpminstallnpmrun dev前端默认地址http://localhost:5173前端开发环境默认直接访问http://localhost:8080配置文件mini-admin-ui/.env.development关键配置VITE_API_BASE_URLhttp://localhost:8080 VITE_API_TIMEOUT30000前后端联调检查确认后端启动成功。访问http://localhost:8080/actuator/health。确认前端.env.development中VITE_API_BASE_URL指向后端地址。访问http://localhost:5173。使用admin / Admin123登录。如果登录超时请查看docs/前端登录超时排查说明.md开源类注释规范后端所有 Java 顶层类型均已补充统一注释示例/** * program: mini-admin-server * ClassName: ClientService * description: 客户管理 Demo 业务服务提供客户增删改查能力。 * * author: 君九 * create: 2026-05-14 10:18 * Copyright a hrefhttps://blog.csdn.net/CharlesYuangc君九DBA/a **/create时间已经在最近 3 个月内按年月日、时分随机分散避免集中在同一天或同一个月。详细规范见docs/开源类注释规范.mdFlyway 注意事项Flyway 会记录已执行脚本的 checksum。已经发布并执行过的迁移脚本不要修改例如V1__init_schema.sql V2__seed_data.sql V3__demo_client_and_menu_adjustment.sql V4__data_dictionary.sql后续新增表或调整菜单请新增下一个版本脚本例如V4__xxx.sql如果遇到校验失败请查看docs/Flyway启动校验失败处理说明.md常见问题1. 页面登录超时先检查后端健康接口再检查前端VITE_API_BASE_URL是否正确。Redis 网络不稳定时可以临时关闭权限缓存exportRBAC_PERMISSION_CACHE_ENABLEDfalsePowerShell$env:RBAC_PERMISSION_CACHE_ENABLEDfalse2. 数据库无法自动创建如果 MySQL 账号没有建库权限请手工执行CREATEDATABASEIFNOTEXISTSmini_adminDEFAULTCHARACTERSETutf8mb4DEFAULTCOLLATEutf8mb4_0900_ai_ci;3. 修改菜单后前端不刷新请退出登录后重新登录或清理浏览器本地存储后再登录。版本记录版本说明6000新增抽屉页框、气泡确认框、Demo 客户管理、菜单重新规划6001修复 Flyway V2 checksum 校验失败问题6002优化前端登录超时排查与接口请求配置作者君九博客https://blog.csdn.net/CharlesYuangc

相关新闻