# rbac-admin **Repository Path**: cwwen/rbac-admin ## Basic Information - **Project Name**: rbac-admin - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-09-24 - **Last Updated**: 2026-03-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # RBAC权限管理系统 基于Spring Boot + Spring Security + JWT + MyBatis-Plus实现的RBAC(基于角色的访问控制)权限管理系统。 ## 项目介绍 本项目是一个完整的后台权限管理系统,实现了用户、角色、权限、菜单的管理,以及基于JWT的认证和授权。 ### 核心功能 - 用户管理:用户的增删改查、分配角色 - 角色管理:角色的增删改查、分配菜单和权限 - 菜单管理:菜单的增删改查、树形结构展示 - 权限管理:权限的增删改查 - 认证授权:基于JWT的登录认证和权限控制 ### 技术栈 - 后端:Spring Boot、Spring Security、JWT、MyBatis-Plus - 数据库:MySQL - 工具:Lombok、Validation ## 系统架构 ``` com.rbac.admin ├── common // 通用类 │ ├── Result // 通用返回结果 │ └── ResultCode // 返回码枚举 ├── config // 配置类 │ ├── JwtTokenUtil // JWT工具类 │ ├── JwtAuthenticationFilter // JWT认证过滤器 │ ├── SecurityConfig // Spring Security配置 │ ├── RestAuthenticationEntryPoint // 未登录处理 │ └── RestAccessDeniedHandler // 无权限处理 ├── controller // 控制器 │ ├── AuthController // 认证控制器 │ ├── UserController // 用户控制器 │ ├── RoleController // 角色控制器 │ ├── MenuController // 菜单控制器 │ └── PermissionController // 权限控制器 ├── entity // 实体类 │ ├── SysUser // 用户实体 │ ├── SysRole // 角色实体 │ ├── SysPermission // 权限实体 │ ├── SysMenu // 菜单实体 │ ├── SysUserRole // 用户角色关联 │ ├── SysRolePermission // 角色权限关联 │ └── SysRoleMenu // 角色菜单关联 ├── mapper // Mapper接口 │ ├── SysUserMapper // 用户Mapper │ ├── SysRoleMapper // 角色Mapper │ ├── SysPermissionMapper // 权限Mapper │ ├── SysMenuMapper // 菜单Mapper │ ├── SysUserRoleMapper // 用户角色Mapper │ ├── SysRolePermissionMapper // 角色权限Mapper │ └── SysRoleMenuMapper // 角色菜单Mapper ├── model // 模型类 │ ├── dto // 数据传输对象 │ │ ├── LoginDTO // 登录参数 │ │ ├── RegisterDTO // 注册参数 │ │ └── UserDTO // 用户信息参数 │ └── vo // 视图对象 │ ├── LoginVO // 登录返回结果 │ └── UserVO // 用户信息返回结果 └── service // 服务接口 ├── SysUserService // 用户服务 ├── SysRoleService // 角色服务 ├── SysPermissionService // 权限服务 ├── SysMenuService // 菜单服务 └── impl // 服务实现 ├── UserDetailsServiceImpl // UserDetails服务实现 ├── SysUserServiceImpl // 用户服务实现 ├── SysRoleServiceImpl // 角色服务实现 ├── SysPermissionServiceImpl // 权限服务实现 └── SysMenuServiceImpl // 菜单服务实现 ``` ## 数据库设计 系统包含以下核心表: - `sys_user`:用户表 - `sys_role`:角色表 - `sys_permission`:权限表 - `sys_menu`:菜单表 - `sys_user_role`:用户角色关联表 - `sys_role_permission`:角色权限关联表 - `sys_role_menu`:角色菜单关联表 ## 接口说明 ### 认证接口 - `POST /api/auth/login`:用户登录 - `POST /api/auth/register`:用户注册 ### 用户接口 - `GET /api/users/info`:获取当前用户信息 - `PUT /api/users/info`:更新用户信息 - `GET /api/users/page`:分页查询用户列表 - `GET /api/users/{userId}/roles`:获取用户角色ID列表 - `POST /api/users/{userId}/roles`:分配用户角色 ### 角色接口 - `GET /api/roles/page`:分页查询角色列表 - `GET /api/roles/list`:获取所有角色列表 - `GET /api/roles/{id}`:获取角色详情 - `POST /api/roles`:添加角色 - `PUT /api/roles/{id}`:更新角色 - `DELETE /api/roles/{id}`:删除角色 - `GET /api/roles/{roleId}/menus`:获取角色菜单ID列表 - `POST /api/roles/{roleId}/menus`:分配角色菜单 - `GET /api/roles/{roleId}/permissions`:获取角色权限ID列表 - `POST /api/roles/{roleId}/permissions`:分配角色权限 ### 菜单接口 - `GET /api/menus/tree`:获取菜单树 - `GET /api/menus/user/tree`:获取当前用户菜单树 - `GET /api/menus/role/{roleId}/tree`:根据角色ID获取菜单树 - `GET /api/menus/{id}`:获取菜单详情 - `POST /api/menus`:添加菜单 - `PUT /api/menus/{id}`:更新菜单 - `DELETE /api/menus/{id}`:删除菜单 ### 权限接口 - `GET /api/permissions/page`:分页查询权限列表 - `GET /api/permissions/list`:获取所有权限列表 - `GET /api/permissions/{id}`:获取权限详情 - `POST /api/permissions`:添加权限 - `PUT /api/permissions/{id}`:更新权限 - `DELETE /api/permissions/{id}`:删除权限 - `GET /api/permissions/user/{userId}`:根据用户ID获取权限列表 ## 使用说明 ### 环境要求 - JDK 1.8+ - Maven 3.6+ - MySQL 8.0+ ### 配置说明 1. 修改 `application.yml` 中的数据库连接信息 2. 修改 JWT 相关配置(密钥、过期时间等) ### 运行步骤 1. 创建数据库并导入SQL脚本 2. 修改配置文件 3. 运行项目:`mvn spring-boot:run` ### 接口测试 可以使用Postman或其他API测试工具进行接口测试: 1. 注册用户:`POST /api/auth/register` 2. 登录获取token:`POST /api/auth/login` 初始化用户名和密码:admin/admin123 3. 在请求头中添加token:`Authorization: Bearer {token}` 4. 测试其他接口 ## 安全说明 - 密码使用BCrypt加密存储 - 使用JWT进行无状态认证 - 基于Spring Security实现权限控制 - 自定义认证和授权异常处理 ## 扩展功能 系统可以根据需求进行以下扩展: - 集成Redis缓存提高性能 - 添加操作日志记录 - 实现数据权限控制 - 集成第三方登录 - 添加验证码功能 ![img.png](img.png) ## 注意事项 1、先用阿里云maven镜像地址刷依赖,有些依赖阿里云镜像仓库无法引入的,就把镜像配置暂时注释掉,再重新引入依赖 2、注意 .gitignore一定要和src目录平级,忽略一些不该提交的代码,具体内容如下: # Default ignored files /shelf/ /workspace.xml # Editor-based HTTP Client requests /httpRequests/ # Datasource local storage ignored files /dataSources/ /dataSources.local.xml **/mvnw **/mvnw.cmd **/.mvn **/target/ **/.gitignore .idea