7.3 KiB
7.3 KiB
Implementation Plan: 用户认证系统迁移
Overview
本任务列表将PHP用户认证系统迁移到.NET 8,按照接口优先级逐个迁移,每完成一个接口都需要更新API接口文档标记迁移状态。
Tasks
-
1. 基础设施准备
- 1.1 创建认证相关的DTO和Request/Response模型
- 在HoneyBox.Model/Models目录下创建Auth相关的请求响应模型
- 包括WechatLoginRequest、MobileLoginRequest、ApiResponse等
- Requirements: 1.1-1.8, 2.1-2.7
- 1.2 创建服务接口定义
- 在HoneyBox.Core/Interfaces目录下创建IAuthService、IJwtService、IWechatService、IUserService、IIpLocationService接口
- Requirements: 1.1-1.8, 2.1-2.7, 3.1-3.6
- 1.3 配置JWT认证中间件
- 在Program.cs中配置JWT Bearer认证
- 添加JwtSettings配置类
- Requirements: 3.1-3.6
- 1.4 配置Redis服务
- 添加StackExchange.Redis依赖
- 配置Redis连接和服务注入
- Requirements: 1.6, 2.1, 2.2, 2.6
- 1.1 创建认证相关的DTO和Request/Response模型
-
2. JWT服务实现
- 2.1 实现JwtService
- 实现Token生成、验证、刷新功能
- 实现从Token中提取用户ID
- Requirements: 3.1-3.5
- 2.2 编写JwtService单元测试
- 测试Token生成和验证
- Property 3: 登录成功Token生成
- Validates: Requirements 3.1, 3.2
- 2.3 编写Token验证属性测试
- Property 7: Token验证与授权
- Validates: Requirements 3.3, 3.4
- 2.1 实现JwtService
-
[-] 3. 用户服务实现
- 3.1 实现UserService基础功能
- 实现用户查找(ByOpenId、ByUnionId、ByMobile)
- 实现用户创建
- 实现UID生成策略
- Requirements: 1.2, 1.3, 2.3
- 3.2 实现用户信息获取和更新
- 实现GetUserInfoAsync
- 实现UpdateUserAsync
- 实现VIP等级计算
- Requirements: 4.1-4.5
- 3.3 编写UserService属性测试
- Property 2: 新用户创建完整性
- Property 9: 用户信息完整性
- Property 10: 昵称更新验证
- Property 11: VIP等级计算
- Validates: Requirements 1.3, 2.3, 4.1, 4.2, 4.4, 4.5
- 3.1 实现UserService基础功能
-
4. 微信服务实现
- 4.1 实现WechatService
- 实现GetOpenIdAsync(调用微信API获取openid/unionid)
- 实现GetMobileAsync(获取微信授权手机号)
- Requirements: 1.1, 5.1
- 4.2 编写WechatService单元测试
- Mock微信API测试
- Requirements: 1.1, 1.7
- 4.1 实现WechatService
-
5. IP地理位置服务实现
- 5.1 实现IpLocationService
- 调用高德地图API解析IP地址
- 返回省份、城市、区域编码
- Requirements: 6.2
- 5.1 实现IpLocationService
-
6. 认证服务实现
- 6.1 实现AuthService - 微信登录
- 实现WechatMiniProgramLoginAsync
- 包含防抖机制、用户查找/创建、Token生成
- Requirements: 1.1-1.8
- 6.2 实现AuthService - 手机号登录
- 实现MobileLoginAsync
- 包含验证码验证、用户查找/创建、Token生成
- Requirements: 2.1-2.7
- 6.3 实现AuthService - 手机号绑定
- 实现BindMobileAsync和WechatBindMobileAsync
- 包含账户合并逻辑
- Requirements: 5.1-5.5
- 6.4 实现AuthService - 登录记录
- 实现RecordLoginAsync
- 记录登录日志、更新UserAccount
- Requirements: 6.1, 6.3, 6.4
- 6.5 实现AuthService - 账号注销
- 实现LogOffAsync
- Requirements: 7.1-7.3
- 6.6 编写AuthService属性测试
- Property 1: 微信登录用户查找优先级
- Property 4: 登录防抖机制
- Property 5: 推荐关系记录
- Property 6: 验证码验证与清理
- Property 8: 数据库Token兼容存储
- Validates: Requirements 1.2, 1.6, 1.8, 2.1, 2.2, 2.6, 2.7, 3.6
- 6.7 编写手机号绑定属性测试
- Property 12: 手机号绑定验证码验证
- Property 13: 账户合并正确性
- Property 14: 直接绑定手机号
- Validates: Requirements 5.1-5.5
- 6.8 编写登录记录属性测试
- Property 15: 登录日志记录
- Property 16: recordLogin接口返回值
- Property 17: 账号注销类型处理
- Validates: Requirements 6.1, 6.3, 6.4, 7.1-7.3
- 6.1 实现AuthService - 微信登录
-
7. Checkpoint - 服务层测试验证
- 确保所有服务层单元测试通过
- 确保所有属性测试通过
- 如有问题请询问用户
-
8. 控制器实现 - AuthController
- 8.1 实现微信小程序登录接口 POST /login
- 调用AuthService.WechatMiniProgramLoginAsync
- 更新API接口文档标记迁移状态
- Requirements: 1.1-1.8
- 8.2 实现手机号登录接口 POST /mobileLogin
- 调用AuthService.MobileLoginAsync
- 更新API接口文档标记迁移状态
- Requirements: 2.1-2.7
- 8.3 实现微信授权绑定手机号接口 POST /login_bind_mobile
- 调用AuthService.WechatBindMobileAsync
- 更新API接口文档标记迁移状态
- Requirements: 5.1-5.5
- 8.4 实现验证码绑定手机号接口 POST /bindMobile
- 调用AuthService.BindMobileAsync
- 更新API接口文档标记迁移状态
- Requirements: 5.1-5.5
- 8.5 实现登录记录接口 GET|POST /login_record
- 调用AuthService.RecordLoginAsync
- 更新API接口文档标记迁移状态
- Requirements: 6.1-6.4
- 8.1 实现微信小程序登录接口 POST /login
-
9. 控制器实现 - UserController
- 9.1 实现获取用户信息接口 POST /user
- 调用UserService.GetUserInfoAsync
- 更新API接口文档标记迁移状态
- Requirements: 4.1-4.5
- 9.2 实现更新用户信息接口 POST /update_userinfo
- 调用UserService.UpdateUserAsync
- 支持Base64头像上传到腾讯云COS
- 更新API接口文档标记迁移状态
- Requirements: 4.2, 4.3
- 9.3 实现账号注销接口 POST /user_log_off
- 调用AuthService.LogOffAsync
- 更新API接口文档标记迁移状态
- Requirements: 7.1-7.3
- 9.1 实现获取用户信息接口 POST /user
-
10. Checkpoint - 控制器测试验证
- 确保所有控制器接口可正常访问
- 使用Postman或HTTP文件测试各接口
- 如有问题请询问用户
-
11. 集成测试
- 11.1 编写微信登录集成测试
- 测试完整的微信登录流程
- Requirements: 1.1-1.8
- 11.2 编写手机号登录集成测试
- 测试完整的手机号登录流程
- Requirements: 2.1-2.7
- 11.3 编写用户信息接口集成测试
- 测试用户信息获取和更新流程
- Requirements: 4.1-4.5
- 11.1 编写微信登录集成测试
-
12. 文档更新和最终验证
- 12.1 更新API接口文档
- 确认所有迁移接口都已标记
- 记录新接口地址
- Requirements: 8.1-8.3
- 12.2 创建HTTP测试文件
- 在HoneyBox.Api目录下创建auth.http测试文件
- 包含所有认证相关接口的测试请求
- 12.1 更新API接口文档
-
13. Final Checkpoint - 完整功能验证
- 确保所有测试通过
- 确保API文档已更新
- 确保与前端兼容性
- 如有问题请询问用户
Notes
- All tasks are required for comprehensive testing from the start
- Each task references specific requirements for traceability
- Checkpoints ensure incremental validation
- Property tests validate universal correctness properties
- Unit tests validate specific examples and edge cases
- 每迁移完成一个接口,都需要在docs/API接口文档.md中标记迁移状态和新接口地址