# project **Repository Path**: icefast/project ## Basic Information - **Project Name**: project - **Description**: 软件课设的仓库 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-07-12 - **Last Updated**: 2025-07-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 在线知识库共享系统 - 用户管理模块 ## 项目简介 本项目是一个基于Spring Boot + MyBatis的在线知识库共享系统,实现了用户管理模块的完整功能。 ## 技术栈 - **后端框架**: Spring Boot 3.4.7 - **数据库**: MySQL 8.0 - **ORM框架**: MyBatis 3.5.10 - **构建工具**: Maven - **Java版本**: 17 ## 用户管理模块功能 ### 核心功能 1. **用户注册与登录** - 用户注册(需要管理员审核) - 用户登录(Token认证) - 用户注销 - 令牌验证 2. **个人信息管理** - 获取用户信息 - 更新用户信息 - 修改密码 - 用户名/邮箱唯一性检查 3. **管理员功能** - 获取用户列表 - 审核用户注册申请 - 禁用/启用用户账户 - 用户状态管理 4. **安全机制** - 密码MD5加密存储 - Token令牌认证 - 权限控制 - 会话管理 ## 数据库设计 ### 主要表结构 1. **user表** - 用户信息表 2. **token表** - 用户令牌表 ### 表关系 - 用户与令牌:一对多(一个用户可以有多个令牌) - 令牌自动过期机制 - 用户状态管理(PENDING/ACTIVE/DISABLED/REJECTED) ## API接口 ### 用户管理接口 | 方法 | 路径 | 描述 | |------|------|------| | POST | `/api/user/register` | 用户注册 | | POST | `/api/user/login` | 用户登录 | | POST | `/api/user/logout` | 用户注销 | | GET | `/api/user/info` | 获取用户信息 | | PUT | `/api/user/info` | 更新用户信息 | | POST | `/api/user/change-password` | 修改密码 | | GET | `/api/user/check-username` | 检查用户名是否存在 | | GET | `/api/user/check-email` | 检查邮箱是否存在 | ### 管理员接口 | 方法 | 路径 | 描述 | |------|------|------| | GET | `/api/user/list` | 获取用户列表 | | POST | `/api/user/approve` | 审核用户 | | POST | `/api/user/toggle-status` | 禁用/启用用户 | ## 快速开始 ### 1. 环境准备 - JDK 17+ - MySQL 8.0+ - Maven 3.6+ ### 2. 数据库配置 1. 执行 `建表.sql` 文件创建数据库和表结构 2. 修改 `application.properties` 中的数据库连接配置 ### 3. 启动项目 ```bash # 编译项目 mvn clean compile # 运行项目 mvn spring-boot:run ``` ### 4. 测试接口 #### 用户注册示例 ```bash curl -X POST "http://localhost:8080/api/user/register" \ -H "Content-Type: application/json" \ -d '{ "username": "testuser", "password": "password123", "email": "test@example.com" }' ``` #### 用户登录示例 ```bash curl -X POST "http://localhost:8080/api/user/login" \ -H "Content-Type: application/json" \ -d '{ "username": "testuser", "password": "password123" }' ``` #### 获取用户信息示例 ```bash curl -X GET "http://localhost:8080/api/user/info" \ -H "Authorization: your_token_here" ``` ## 项目结构 ``` src/main/java/org/example/project_12/ ├── controller/ │ └── UserController.java # 用户管理控制器 ├── service/ │ ├── UserService.java # 用户服务接口 │ └── impl/ │ └── UserServiceImpl.java # 用户服务实现 ├── entity/ │ ├── User.java # 用户实体 │ └── Token.java # 令牌实体 ├── dto/ │ ├── UserDto.java # 用户数据传输对象 │ ├── LoginDto.java # 登录数据传输对象 │ ├── RegisterDto.java # 注册数据传输对象 │ ├── UpdateUserDto.java # 用户更新数据传输对象 │ └── Result.java # 统一返回结果 └── mapper/ ├── UserMapper.java # 用户数据访问层 └── TokenMapper.java # 令牌数据访问层 ``` ## 业务逻辑 ### 用户注册流程 1. 验证用户输入信息(用户名、密码、邮箱) 2. 检查用户名和邮箱唯一性 3. 密码MD5加密 4. 创建用户记录(状态为PENDING) 5. 等待管理员审核 ### 用户登录流程 1. 验证用户名和密码 2. 检查用户状态是否为ACTIVE 3. 生成访问令牌(24小时有效期) 4. 删除旧令牌 5. 保存新令牌 ### 权限控制逻辑 1. **普通用户**: 可以管理个人信息,参与协作 2. **团队管理者**: 可以创建空间,管理成员 3. **系统管理员**: 可以审核用户,管理整个系统 ### 令牌管理流程 1. **令牌生成**: 登录时生成UUID令牌 2. **令牌验证**: 每次请求验证令牌有效性 3. **令牌过期**: 24小时后自动过期 4. **令牌清理**: 注销时删除令牌 ## 测试 运行测试类验证功能: ```bash mvn test ``` ## 注意事项 1. 用户注册后需要管理员审核才能登录 2. 用户名和邮箱在系统中必须唯一 3. 密码使用MD5加密存储 4. 令牌有效期为24小时 5. 管理员功能需要ADMIN角色权限 6. 禁用用户时会自动清除其登录令牌 ## 扩展功能 后续可以扩展的功能: 1. 邮箱验证功能 2. 密码重置功能 3. 用户头像上传 4. 用户行为日志 5. 多因素认证 6. 用户组管理