# hou-auth2 **Repository Path**: liul3/hou-auth2 ## Basic Information - **Project Name**: hou-auth2 - **Description**: 这是一个基于RBAC模型的企业员工管理系统,重点演示用户认证和授权功能的实现。简称 auth2 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-05-17 - **Last Updated**: 2025-05-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 企业员工管理系统 - 认证与授权示例 这是一个基于RBAC模型的企业员工管理系统,重点演示用户认证和授权功能的实现。 ## 项目架构 ### 后端技术栈 - Spring Boot 3.x - Sa-Token + OAuth2 权限认证框架 - MyBatis-Plus 数据访问层 - MySQL 数据库 ### 前端技术栈 - Vue 3 - TypeScript - Element Plus - Pinia - Vue Router ## 角色设计 系统中有以下角色: - **管理员**:可以管理所有员工信息,分配角色 - **部门经理**:可以查看所有员工,但只能编辑本部门员工 - **普通员工**:只能查看和编辑自己的基本信息 ## 功能特性 - 用户认证(登录/登出) - 基于角色的权限控制 - OAuth2集成 - 用户管理 - 个人资料管理 ## 快速开始 ### 数据库配置 1. 创建MySQL数据库: `auth_system` 2. 导入初始化脚本: `backend/src/main/resources/db/init.sql` ### 后端运行 ```bash cd backend mvn spring-boot:run ``` ### 前端运行 ```bash cd frontend npm install npm run dev ``` ## 默认账号 系统预置了以下用户账号进行测试: | 用户名 | 密码 | 角色 | |-------|------|-----| | admin | 123456 | 管理员 | | manager1 | 123456 | 部门经理(技术部) | | manager2 | 123456 | 部门经理(人事部) | | employee1 | 123456 | 普通员工(研发组) | | employee2 | 123456 | 普通员工(研发组) | | employee3 | 123456 | 普通员工(测试组) | ## 认证流程 1. 用户通过用户名/密码登录系统 2. 服务端验证成功后,使用Sa-Token生成认证令牌并返回 3. 前端保存令牌并在后续请求中通过请求头传递 4. 服务端拦截器验证请求中的令牌有效性 5. 根据用户角色和权限决定是否允许访问资源 ## OAuth2使用 系统集成了OAuth2认证流程,支持授权码模式: 1. 客户端请求授权:`/oauth2/authorize?client_id=1001&response_type=code&redirect_uri=http://localhost:8080/oauth2/callback&scope=userinfo` 2. 用户登录并确认授权 3. 服务端重定向并返回授权码 4. 客户端使用授权码换取访问令牌:`/oauth2/token?grant_type=authorization_code&client_id=1001&client_secret=123456&code=xxx&redirect_uri=http://localhost:8080/oauth2/callback` 5. 客户端使用访问令牌请求资源:`/oauth2/userinfo?access_token=xxx` ## 项目结构 ### 后端结构 ``` backend/ ├── src/main/java/com/example/auth/ │ ├── config/ # 配置类 │ ├── controller/ # 控制器 │ ├── entity/ # 实体类 │ ├── mapper/ # MyBatis接口 │ ├── service/ # 服务接口及实现 │ ├── dto/ # 数据传输对象 │ ├── common/ # 公共类 │ └── AuthSystemApplication.java # 启动类 └── src/main/resources/ ├── mapper/ # MyBatis XML映射文件 ├── application.yml # 应用配置 └── db/init.sql # 数据库初始化脚本 ``` ### 前端结构 ``` frontend/ ├── src/ │ ├── api/ # API请求 │ ├── assets/ # 静态资源 │ ├── components/ # 组件 │ ├── router/ # 路由配置 │ ├── stores/ # 状态管理 │ ├── views/ # 页面 │ ├── App.vue # 根组件 │ └── main.ts # 入口文件 └── public/ # 公共资源 ```