# BasePro **Repository Path**: java_home_bugli/base-pro ## Basic Information - **Project Name**: BasePro - **Description**: BasePro:一个专注于基础架构优化的开源项目,提供高效、稳定的技术解决方案,支持多环境部署与管理,助力开发者快速构建高质量应用。准备参考若依。但是只集成登录、字典、用户、角色、操作日志、菜单管理、在线用户、登录日志、服务监控、参数管理、存储管理、文件管理 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-24 - **Last Updated**: 2026-05-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Base Pro 面向个人开发者与小团队的**轻量级后台管理底座**,借鉴 **[若依(RuoYi)](https://gitee.com/y_project/RuoYi-Vue)** 的分层与权限菜单思路,采用 **Spring Boot 3 + Vue 3** 前后端分离实现;刻意保持架构简单,**不绑定分布式中间件**,便于学习与二次开发。 > 本项目由个人维护,**不单独建设教程站或文档站点**;环境搭建、配置与运行说明均收敛在本 README 与仓库内 `docs/` 目录。 | 项 | 链接 | |----|------| | **在线预览** | [http://47.108.187.149/](http://47.108.187.149/) | | **克隆 / 下载** | `git clone https://gitee.com/java_home_bugli/base-pro.git` | --- ## 内置能力一览 | 模块 | 说明 | |------|------| | 认证与安全 | 无状态 Bearer Token、在线会话表、方法级 `@PreAuthorize`、登录失败简易限流(单机内存)、可选全局只读演示模式 | | 系统管理 | 用户、角色、菜单(含按钮权限点)、字典类型/数据 | | 日志与监控 | 操作日志、登录日志、在线用户、服务监控(调用现有接口) | | 参数与存储 | 参数配置、存储配置、本地文件上传/下载/预览(含 kkFileView 可选对接说明) | | 个人中心 | 资料、密码、头像(接口层) | 租户字段已预埋(`tenant_id`),默认按单租户 `0` 使用。 --- ## 技术栈 | 层级 | 技术 | |------|------| | 后端运行环境 | JDK **17** | | 后端框架 | Spring Boot **3.2.x**、Spring Security、MyBatis、Druid、MySQL | | 前端 | Vue **3**、Vite、Element Plus、Pinia、Vue Router | | API 文档 | springdoc-openapi(Swagger UI,访问方式见下文) | --- ## 工程结构(Maven 多模块) ``` base-pro/ ├── base-pro-common/ # 通用模型与工具(统一返回体等) ├── base-pro-system/ # 业务领域(用户/角色/菜单/字典/日志/文件等) ├── base-pro-framework/ # 安全、审计切面等横切能力 ├── base-pro-admin/ # Web API、Spring Boot 启动入口 ├── base-pro-ui/ # 前端工程(Vue + Vite) ├── db/ # base_pro.sql 基准脚本 & migration 增量 SQL(手工执行) └── docs/ # 开发约束与规范(提交代码前建议阅读) ``` --- ## 环境要求 - **JDK 17**、**Maven 3.8+** - **Node.js 18+**(前端) - **MySQL 8.x**(推荐;字符集 `utf8mb4`) --- ## 从零搭建到本地运行 ### 1. 获取代码 ```bash git clone https://gitee.com/java_home_bugli/base-pro.git base-pro cd base-pro ``` ### 2. 创建数据库并导入基准脚本 1. 在 MySQL 中创建库(名称需与配置一致,默认 `base_pro`): ```sql CREATE DATABASE base_pro DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; ``` 2. 导入仓库中的基准数据(表结构 + 初始菜单与用户等): ```bash # Windows PowerShell 示例(按实际路径调整 mysql 客户端) mysql -u root -p base_pro < db/base_pro.sql ``` ### 3. 配置后端数据源 编辑 `base-pro-admin/src/main/resources/application.yml`: - 默认 **`spring.profiles.active` 为 `dev`**,数据源在 **dev** 文档段中配置(示例:`localhost:3306/base_pro`、`root` / `admin`)。 - 生产部署请使用 **`prod` profile**,并用环境变量或独立配置文件覆盖数据库账号密码,**切勿将生产密钥提交到仓库**。 主要端口: - 后端 HTTP:**8387**(可通过环境变量 `SERVER_PORT` 覆盖) - 前端开发服务器:**5173**(Vite 默认) ### 4. 编译并启动后端 在项目根目录执行: ```bash mvn clean package -DskipTests -pl base-pro-admin -am ``` 启动: ```bash java -jar base-pro-admin/target/base-pro-admin-0.1.0-SNAPSHOT.jar ``` 或在 IDE 中运行主类:`com.basepro.admin.BaseProAdminApplication`。 健康检查示例:`GET http://localhost:8387/actuator/health` 连通性示例:`GET http://localhost:8387/api/ping` ### 5. 安装依赖并启动前端 ```bash cd base-pro-ui npm install npm run dev ``` 浏览器访问:**http://localhost:5173** 开发环境下,Vite 已将 **`/api`** 代理到 `http://127.0.0.1:8387`,前端无需单独配置跨域。 ### 6. 默认登录说明 导入仓库提供的 **`db/base_pro.sql`** 后,超级管理员账号一般为 **`admin`**;前端登录页默认预填密码为 **`123456`**(与示例库一致时可直接登录)。若你修改过库内密码哈希,请以数据库为准。 --- ## 前后端分离部署(简要) 1. **前端**:在 `base-pro-ui` 执行 `npm run build`,将 `dist/` 部署到 Nginx/Caddy 等静态资源目录;将 **`/api`** 反向代理到后端(例如 `http://127.0.0.1:8387`)。 2. **后端**:使用 **`prod` profile** 启动,例如: ```bash java -jar base-pro-admin/target/base-pro-admin-0.1.0-SNAPSHOT.jar --spring.profiles.active=prod ``` 3. **跨域**:`prod` 下若前端与后端不同源,请在 `application.yml` 的 `base-pro.cors.allowed-origin-patterns` 中填写你的前端访问来源(逗号分隔)。 4. **反向代理与真实 IP**:`prod` 中默认启用 `server.forward-headers-strategy: framework`(适用于应用部署在**可信** Nginx/Caddy 之后)。若进程**直接对公网监听且无反向代理**,请改为 **`none`**,避免客户端伪造 `X-Forwarded-*` 影响限流与日志 IP。 5. **Actuator**:`prod` 仅暴露必要探针;**切勿**对公网开放 `env`、`heapdump` 等高危端点。 --- ## 配置项说明(常用) | 配置键 | 含义 | |--------|------| | `base-pro.security.token-expire-minutes` | Token 有效期(分钟) | | `base-pro.security.guest-login-enabled` | 全局只读演示:开启后登录用户注入全量菜单权限,且拦截除登录/登出/续期等外的写接口(配置名历史遗留) | | `base-pro.security.login-rate-limit-max-per-ip` | 单 IP 登录失败次数上限(0 表示关闭限流) | | `base-pro.security.login-rate-limit-window-minutes` | 上述计数时间窗口(分钟) | | `base-pro.storage.local-root` | 本地存储根目录(相对路径相对进程工作目录) | | `base-pro.cors.allowed-origin-patterns` | CORS 允许的 `Origin` 模式 | 说明:**默认配置文件中根文档将 `guest-login-enabled` 设为 `false`**;**`dev` profile 下为 `true`**,便于本地演示。上线请务必使用 **`prod`** 并关闭演示模式。 --- ## API 文档(Swagger) 集成 **springdoc-openapi** 后,典型地址为: - UI:`http://localhost:8387/swagger-ui/index.html` - OpenAPI JSON:`http://localhost:8387/v3/api-docs` 当前 Spring Security 对除白名单外的接口要求登录,浏览 Swagger 时请在界面中配置 **Bearer Token**(先调用登录接口获取 token),或在后续按需为开发环境单独放行文档路径(自行权衡安全)。 --- ## 开发规范 提交代码或参与扩展前,请先阅读仓库内 **`docs/00-开发约束与规范.md`**(含阿里巴巴 Java 开发手册约束、分层与接口约定等)。个人项目同样建议保持风格一致,降低后续维护成本。 --- ## 与若依的差异(心智模型) - **目标**:若依功能完整、生态成熟;Base Pro 侧重 **结构清晰 + 依赖克制**,适合作为个人脚手架或小项目底座。 - **技术代际**:后端基于 **Spring Boot 3 / JDK 17**;权限模型仍为「菜单按钮 → `perms` → 后端 `hasAuthority`」一脉相承。 - **无内置代码生成器、工作流、多数据源向导等**,需要时由你在业务侧按需扩展。 --- ## 开源说明 本项目由个人开发者开源维护;源码托管于 Gitee:[https://gitee.com/java_home_bugli/base-pro](https://gitee.com/java_home_bugli/base-pro),欢迎 Issue / PR。若未单独放置 `LICENSE` 文件,使用前请与维护者确认许可方式。 --- ## 致谢 感谢 **若依(RuoYi)** 项目在权限模型与工程组织上提供的优秀参考;本仓库实现与文档均为独立维护,与若依官方无隶属关系。