docs: 更新文档

This commit is contained in:
bunny 2025-04-28 23:58:50 +08:00
parent df4a9c3b5e
commit bd85284860
9 changed files with 200 additions and 29 deletions

229
ReadMe.md
View File

@ -1,14 +1,14 @@
# 感谢 # BunnyAuth动态权限控制简介
> [!important] > [!IMPORTANT]
> >
> 前端项目整体都由此模板开发 > 前端项目整体都由此模板开发
>
> 项目由[小铭](https://github.com/xiaoxian521)开源权限模板[Pure-admin](https://pure-admin.github.io/vue-pure-admin/)
>
> **Pure-admin文档**https://pure-admin.github.io/pure-admin-doc
项目由[小铭](https://github.com/xiaoxian521)开源权限模板[Pure-admin](https://pure-admin.github.io/vue-pure-admin/) ## 视频说明地址
**Pure-admin文档**https://pure-admin.github.io/pure-admin-doc
## 视频和地址
**介绍视频视频** **介绍视频视频**
@ -32,38 +32,209 @@
- 代码生成器前端https://gitee.com/BunnyBoss/generator-code-web - 代码生成器前端https://gitee.com/BunnyBoss/generator-code-web
- 代码生成器后端https://gitee.com/BunnyBoss/generator-code-server - 代码生成器后端https://gitee.com/BunnyBoss/generator-code-server
![DAOCHU](D:\Project\Project\FullStack\Auth\auth-server\images\DAOCHU.png) ## 🚀 项目简介
# 项目预览 一个基于 Spring Security 6 的现代化动态权限控制系统,提供完整的 RBAC 权限管理解决方案。支持前后端分离架构,可灵活配置细粒度权限控制。
**线上地址** ## ✨ v4.0.0 重大更新
正式线上预览地址http://bunny-web.site/#/welcome ### 核心改进
> 如果发现网站打开白屏很有可能是因为更新造成的,因为需要维护删除不需要的功能可能会导致这个情况,但基本不会遇到。 - **全面重构**后端接口、实体类等重构前端重构部分j+优化操作体验
> - **批量操作支持**
> 谷歌方式如下: - ✅菜单管理:完善属性内容
> - ✅ 权限管理:支持 JSON/Excel 导入导出
> ![image-20250108225817891](http://129.211.31.58:9000/docs/image-20250108225817891.png) - ✅ 角色管理:支持 Excel 批量更新
> - ✅ 多语言配置:支持 JSON/Excel 更新(全量替换模式)
> Edge方式如下
>
> ![image-20250108225915189](http://129.211.31.58:9000/docs/image-20250108225915189.png)
# 项目概览 ### 技术亮点
接口地址:访问`http:://localhost:7070`会有接口地址信息 - **注解扫描**:通过 `AnnotationScanner.java` 自动扫描想要的注解
![image-20250222184157801](http://129.211.31.58:9000/docs/image-20250222184157801.png) ```java
// 示例:扫描特定注解的类
public static Set<Class<?>> getClassesWithAnnotation(Class<?> annotation) {
// 实现细节...
}
```
- **应用场景**
- 定时任务配置
- 权限接口发现
![image-20241106132548236](http://129.211.31.58:9000/docs/image-20241106132548236.png) ### 界面优化
![image-20241106140545328](http://129.211.31.58:9000/docs/image-20241106140545328.png) ![权限管理界面](./images/image-20250428223816172.png)
![角色管理界面](./images/image-20250428223843974.png)
![image-20241106141037894](http://129.211.31.58:9000/docs/image-20241106141037894.png) ## 🔐 权限控制体系
![image-20241106142208794](http://129.211.31.58:9000/docs/image-20241106142208794.png) ![image-20250428225337843](./images/image-20250428225337843-1745854181492-5.png)
采用Quarter持久化存储。 ### 访问规则配置
![image-20241229220003779](http://129.211.31.58:9000/docs/image-20241229220003779.png) 通过 `WebSecurityConfig` 配置
| 路径类型 | 示例 | 访问要求 | 配置方式 |
| -------- | ----------------- | -------- | ------------------------- |
| 公开接口 | `/api/public/**` | 无需认证 | 路径包含 `public` 关键字 |
| 私有接口 | `/api/private/**` | 需登录 | 路径包含 `private` 关键字 |
### 路径匹配策略
```java
public static String[] annotations = { ... };
// 配置示例
http.authorizeHttpRequests(auth -> auth
.authorizeHttpRequests(authorize -> authorize
.requestMatchers(annotations).permitAll()
);
```
## 🛠️ 应用场景
### 1. 纯前端控制模式
前端原理详情查看Pure文档https://pure-admin.cn/pages/RBAC/#%E5%A6%82%E4%BD%95%E9%85%8D%E7%BD%AE
![image-20250428230444403](./images/image-20250428230444403-1745854157395-3.png)
- **页面控制**
1. 为路由菜单分配角色
2. 为用户分配角色
- **按钮控制**
```ts
// 前端权限码配置
const auth = {
add: ['i18nType::add'],
update: ['i18nType::update'],
delete: ['i18nType::delete']
};
```
### 2. 纯后端控制模式
- 接口级权限:分页这种就可以添加为`/api/permission/*/*`
```java
@Tag(name = "系统权限")
@RestController
@RequestMapping("api/permission")
public class PermissionController {
@Operation(summary = "分页查询", tags = {"permission::page"})
@GetMapping("{page}/{limit}")
public Result<PageResult<PermissionVo>> getPermissionPage(
@PathVariable Integer page,
@PathVariable Integer limit) {
// ...
}
}
```
### 3. 全栈控制模式
前两个结合
## 🛡️ 安全配置
### 路径匹配策略
AntPath详情https://juejin.cn/spost/7498247273660743732
| 模式 | 示例 | 说明 |
| -------- | --------------- | ---------------- |
| 精确匹配 | `/api/user` | 完全匹配路径 |
| 通配符 | `/api/user/*` | 匹配单级路径 |
| 多级通配 | `/api/user/**` | 匹配多级路径 |
| 方法限定 | `GET /api/user` | 匹配特定HTTP方法 |
## 🧰 技术栈
### 前端
- Vue 3 + PureAdmin 模板
- 自定义权限组件
- 国际化支持
### 后端
- Spring Boot 3 + Spring Security 6
- JDK 17
- MySQL + Redis + MinIO
- Swagger + Knife4j 文档
### 开发环境
根据不懂docker 启动方式不一样
```bash
# 一键启动依赖服务
docker-compose up -d
# 新版的docker
docker compose up -d
```
## 📚 最佳实践
1. **注解规范**
```java
@Tag(name = "模块名称", description = "模块描述")
@Operation(summary = "接口摘要", tags = {"权限码"})
// 或者
@Operation(summary = "接口摘要", tags = "权限码")
```
2. **权限码设计**
- 模块::操作 (如 `user::create`)
- 分层级设计 (如 `system:user:update`)
3. **批量操作**
- 使用 Excel/JSON 管理大量权限配置
- 定期备份权限配置
## 🌟 项目优势
1. **真正的动态控制** - 无需硬编码权限逻辑
2. **灵活的数据导入** - 支持多种文件格式
3. **细粒度控制** - 从页面到按钮的多层级权限
4. **现代化技术栈** - 基于最新 Spring 生态
5. **开箱即用** - 提供完整 Docker 部署方案
## 📌 注意事项
1. 多语言更新会完全替换现有配置
2. 生产环境建议禁用 Swagger 端点
4. 复杂权限建议使用 Excel 批量管理
## 📈 后续规划
- [ ] 权限级别拖拽
- [ ] 权限树型结构动态添加、更新、删除
- [ ] 用户设置持久化存储到数据库
- [ ] 权限弹窗页面优化
- [ ] 后端文档注释完善
- [ ] 系统监控后端返回403停止请求
## 前后端接口规范
### 前端示例规范
| **操作** | **API 层** | **Pinia 层** |
| :------- | :------------ | :-------------- |
| 查询单个 | `getUser` | `loadUser` |
| 查询列表 | `getUserList` | `loadUserList` |
| 分页查询 | `getUserPage` | `fetchUserPage` |
| 新增数据 | `createUser` | `addUser` |
| 更新数据 | `updateUser` | `editUser` |
| 删除数据 | `deleteUser` | `removeUser` |
### 后端接口示例规范
遵循Restful
| **操作** | **RESTful** |
| :------- | :-------------------------- |
| 查询列表 | `GET /users` |
| 分页查询 | `GET /users/{page}/{limit}` |
| 查询单个 | `GET /users/{id}` |
| 新增 | `POST /users` |
| 更新 | `PUT /users/{id}` |
| 删除 | `DELETE /users/{id}` |
![wx_alipay](./images/wx_alipay.png)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 577 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
images/wx_alipay.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 KiB