# RBAC_BASE **Repository Path**: nice-office_0/rbac-base ## Basic Information - **Project Name**: RBAC_BASE - **Description**: 权限框架基础模型 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2026-04-27 - **Last Updated**: 2026-07-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # RBAC-BASE RBAC-BASE 是一个基于 `Spring Boot 3 + Sa-Token + MyBatis-Plus + Vue 3 + Vite + Ant Design Vue` 的权限管理基础框架,目标是提供一套可直接继续业务开发的 RBAC 底座,而不是只停留在登录和菜单演示。 ## 系统能做什么 - 提供账号登录、会话校验、菜单权限、按钮权限等基础认证授权能力 - 提供用户、角色、菜单、部门四类核心 RBAC 管理能力 - 提供字典、存储配置、附件管理、仪表盘、操作日志、登录日志等系统级模块 - 提供本地存储、阿里云 OSS、MinIO 的统一文件存储抽象 - 提供图片、PDF、Office 文档的统一文件预览入口,业务页面后续可按文件 ID 复用 - 提供 Web 管理端,并预留 UniApp 移动端接入能力 ## 当前模块 ### 后端模块 - `modules/rbac` - 登录认证 - 用户管理 - 角色管理 - 菜单管理 - 部门管理 - 权限分配 - `modules/system` - 仪表盘统计 - 字典类型与字典数据 - 文件上传、预览、下载、删除、统计与导出 - 存储配置管理 - `modules/log` - 登录日志 - 操作日志 - `modules/tool` - 代码生成器接口目录已保留 - 当前版本暂缓继续开发,前端入口已改为占位说明页 ### 前端模块 - 登录页 - 首页仪表盘 - 用户管理 - 角色管理 - 菜单管理 - 部门管理 - 字典管理 - 文件管理 - 图片缩略图 - 文件预览弹窗 - 文件统计报表 - 文件导出 - 存储配置 - 操作日志 - 登录日志 - 个人中心 ### 移动端现状 `rbac-uniapp` 当前保留了基础页面骨架,已包含登录页、首页、用户页等初始页面,属于早期接入状态,还没有形成完整业务闭环。 ## 目录结构 ```text RBAC-BASE/ ├─ rbac-java/ 后端服务 ├─ rbac-vue/ Web 管理端 ├─ rbac-uniapp/ UniApp 移动端骨架 ├─ init.sql 初始化数据库脚本 └─ PROJECT_GUIDE.md ``` ## 快速启动 ### 1. 初始化数据库 - 创建数据库,例如 `rbac_base` - 执行根目录的 [init.sql](/E:/code/gemini/RBAC-BASE/init.sql) ### 1.1 已有数据库升级 - 如果你本地已经跑过旧版本库,不要只替换代码 - 先执行 [scripts/schema_patch_20260427.sql](/E:/code/gemini/RBAC-BASE/scripts/schema_patch_20260427.sql) - 再执行 [scripts/schema_patch_20260427_permission_model.sql](/E:/code/gemini/RBAC-BASE/scripts/schema_patch_20260427_permission_model.sql) - 这一步会补齐用户表字段、修正字典表时间列、补权限表备注列,并增加当前查询需要的索引 - 第二个补丁会把按钮权限模型从“权限表直接挂菜单”升级为“全局权限定义 + 菜单挂载关系 + 用户直授权预留” ### 2. 启动后端 - 进入 `rbac-java` - 修改 `src/main/resources/application.yml` 中的数据库连接 - 使用 JDK 21 启动 Spring Boot 服务 - 默认端口为 `8080` ### 3. 启动前端 - 进入 `rbac-vue` - 安装依赖 - 执行 `npm run dev` 或 `pnpm dev` - 默认开发端口为 `3000` - 文件预览依赖 `@vue-office/docx`、`@vue-office/pdf`、`@vue-office/excel`、`@vue-office/pptx`,建议优先使用 `pnpm install` ## 当前修复重点 当前阶段优先处理“已完成模块的稳定性问题”,不继续扩展代码生成器。最近已处理的重点包括: - 本地存储静态资源映射不再写死路径 - 个人中心头像上传改为走登录可用的通用上传接口 - 个人中心增加当前登录人资料接口,避免依赖用户管理权限 - 代码生成页改为稳定占位,避免前端构建失败 - 初始化脚本与现库迁移脚本已补齐用户表、字典表、权限表的结构对齐 - 按钮权限已升级为可跨菜单复用,并在角色授权侧加入独立分页授权能力 - 文件预览/下载已改为按文件 ID 访问,支持头像正式文件引用、附件管理图片缩略图、当前页弹窗预览 - 文件管理已补齐统计报表、导出和 `ONLY_FULL_GROUP_BY` 兼容修复 - 菜单、角色、部门页已补充树搜索入口,并沉淀可复用的树搜索组件与后端树构建工具 - Web 管理端已抽取统一主题配色,后续改主色、状态色优先修改主题变量 ## 说明 ### RBAC 基座最短接入方式 新业务接口只需要声明权限码;列表查询需要数据范围时再增加 `@DataScope`: ```java @SaCheckPermission("biz:entity:list") @DataScope(deptColumn = "dept_id", userColumn = "create_by") public Result list() { return Result.success(service.list()); } ``` 角色、菜单、权限码和用户直授的变更统一调用 `AuthorizationFacade`,业务模块不直接操作授权关系表。普通角色授权不需要配置复杂策略;用户直授和数据范围属于按需能力。 - 仓库中的配置文件不应直接携带生产环境敏感信息 - `dist`、`target`、`node_modules`、运行日志等中间产物不应提交 - `rbac-uniapp` 仍处于独立调试阶段,提交前需要确认移动端改动是否已经完成 - 如需继续开发,请先阅读 [PROJECT_GUIDE.md](/E:/code/gemini/RBAC-BASE/PROJECT_GUIDE.md)