权限管理web页面
Go to file
bunny ba36f0966b docs: 📚 更新文档 2025-04-29 00:00:37 +08:00
.husky init 2024-09-26 09:38:02 +08:00
.vscode ci: 🎡 更新包 2025-04-01 11:14:15 +08:00
build feat: 使用json或excel导入导出权限 2025-04-28 18:40:25 +08:00
docker ci: 🎡 配置文件修改 2025-02-18 20:51:07 +08:00
images docs: 📚 更新文档 2025-04-29 00:00:37 +08:00
public fix: 🧩 删除不需要内容 2024-11-12 18:29:52 +08:00
src docs: 📚 更新文档 2025-04-29 00:00:37 +08:00
.browserslistrc init 2024-09-26 09:38:02 +08:00
.dockerignore init 2024-09-26 09:38:02 +08:00
.editorconfig init 2024-09-26 09:38:02 +08:00
.env feat: 🚀 用户登录未完成 2024-09-26 16:58:51 +08:00
.env.development fix: 🧩 删除不需要内容 2024-11-12 18:29:52 +08:00
.env.production ci: 🎡 配置文件修改 2025-02-18 20:51:07 +08:00
.gitignore fixbug: 🐛 修改部分bug和缺陷 2024-11-09 02:07:13 +08:00
.lintstagedrc init 2024-09-26 09:38:02 +08:00
.markdownlint.json init 2024-09-26 09:38:02 +08:00
.npmrc init 2024-09-26 09:38:02 +08:00
.nvmrc init 2024-09-26 09:38:02 +08:00
.prettierrc.js style: 格式化代码 2025-04-28 09:39:28 +08:00
.stylelintignore init 2024-09-26 09:38:02 +08:00
LICENSE docs: 📚 添加开源协议 2024-10-23 09:58:27 +08:00
ReadMe.md docs: 📚 更新文档 2025-04-29 00:00:37 +08:00
commitlint.config.js media: 🎁 添加批量添加权限文件 2024-10-09 17:00:10 +08:00
eslint.config.js refactor: 〽️ 重构菜单内容 2025-04-25 16:21:15 +08:00
index.html style: 代码格式化 2025-04-24 13:43:37 +08:00
lint-staged.config.js init 2024-09-26 09:38:02 +08:00
package.json feat: 添加角色导入导出;修改组件信息 2025-04-26 08:57:23 +08:00
pnpm-lock.yaml ci: 🎡 更新包 2025-04-01 11:14:15 +08:00
postcss.config.js ci: 🎡 更新包 2025-04-01 11:14:15 +08:00
push.sh feat: 添加推送脚本 2025-04-07 14:50:44 +08:00
stylelint.config.js init 2024-09-26 09:38:02 +08:00
tailwind.config.ts refactor: 〽️ 重构菜单内容 2025-04-25 16:21:15 +08:00
tsconfig.json ci: 🎡 更新包 2025-04-01 11:14:15 +08:00
vite.config.ts refactor: 〽️ 重构菜单内容 2025-04-25 16:21:15 +08:00

ReadMe.md

BunnyAuth动态权限控制简介

[!IMPORTANT]

前端项目整体都由此模板开发

项目由小铭开源权限模板Pure-admin

Pure-admin文档https://pure-admin.github.io/pure-admin-doc

视频说明地址

介绍视频视频

Github地址

Gitee地址

🚀 项目简介

一个基于 Spring Security 6 的现代化动态权限控制系统,提供完整的 RBAC 权限管理解决方案。支持前后端分离架构,可灵活配置细粒度权限控制。

v4.0.0 重大更新

核心改进

  • 全面重构后端接口、实体类等重构前端重构部分j+优化操作体验
  • 批量操作支持
    • 菜单管理:完善属性内容
    • 权限管理:支持 JSON/Excel 导入导出
    • 角色管理:支持 Excel 批量更新
    • 多语言配置:支持 JSON/Excel 更新(全量替换模式)

技术亮点

  • 注解扫描:通过 AnnotationScanner.java 自动扫描想要的注解

    // 示例:扫描特定注解的类
    public static Set<Class<?>> getClassesWithAnnotation(Class<?> annotation) {
        // 实现细节...
    }
    
  • 应用场景

    • 定时任务配置
    • 权限接口发现

界面优化

权限管理界面 角色管理界面

🔐 权限控制体系

image-20250428225337843

访问规则配置

通过 WebSecurityConfig 配置

路径类型 示例 访问要求 配置方式
公开接口 /api/public/** 无需认证 路径包含 public 关键字
私有接口 /api/private/** 需登录 路径包含 private 关键字

路径匹配策略

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

  • 页面控制
    1. 为路由菜单分配角色
    2. 为用户分配角色
  • 按钮控制
    // 前端权限码配置
    const auth = {
      add: ['i18nType::add'],
      update: ['i18nType::update'],
      delete: ['i18nType::delete'],
    };
    

2. 纯后端控制模式

  • 接口级权限:分页这种就可以添加为/api/permission/*/*

    @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 启动方式不一样

# 一键启动依赖服务
docker-compose up -d
# 新版的docker
docker compose up -d

📚 最佳实践

  1. 注解规范

    @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 端点
  3. 复杂权限建议使用 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