# Verification 验证码管理模块 Verification 是应用的核心验证码管理工具模块,提供完整的验证码生成、验证、存储和防刷机制。作为底层技术工具,可被多个业务模块复用,支持邮箱验证、密码重置、短信验证等多种场景。 ## 验证码生成和管理 ### generateCode() 生成指定类型的验证码,支持频率限制和防刷机制。 ### verifyCode() 验证用户输入的验证码,包含尝试次数控制和TTL管理。 ### deleteCode() 主动删除指定的验证码,用于清理或重置场景。 ## 验证码状态查询 ### codeExists() 检查指定验证码是否存在,用于状态判断。 ### getCodeTTL() 获取验证码剩余有效时间,用于前端倒计时显示。 ### getCodeStats() 获取验证码详细统计信息,包含尝试次数和创建时间。 ## 防刷和管理功能 ### clearCooldown() 清除验证码发送冷却时间,用于管理员操作或特殊场景。 ### cleanupExpiredCodes() 清理过期验证码的定时任务方法,Redis自动过期机制的补充。 ### debugCodeInfo() 调试方法,获取验证码完整信息,仅用于开发环境。 ## 使用的项目内部依赖 ### IRedisService (来自 ../../redis/redis.interface) Redis服务接口,提供缓存存储、过期时间管理和键值操作能力。 ### VerificationCodeType (本模块) 验证码类型枚举,定义邮箱验证、密码重置、短信验证三种类型。 ### VerificationCodeInfo (本模块) 验证码信息接口,包含验证码、创建时间、尝试次数等完整数据结构。 ## 核心特性 ### 多类型验证码支持 - 邮箱验证码:用于用户注册和邮箱验证场景 - 密码重置验证码:用于密码找回和重置流程 - 短信验证码:用于手机号验证和双因子认证 ### 完善的防刷机制 - 发送频率限制:60秒冷却时间,防止频繁发送 - 每小时限制:每小时最多发送5次,防止恶意刷取 - 验证尝试控制:最多3次验证机会,超出自动删除 ### Redis缓存集成 - 自动过期机制:验证码5分钟自动过期 - TTL精确控制:保持原有过期时间,不重置倒计时 - 键命名规范:统一的Redis键命名和管理策略 ### 完整的错误处理 - 异常分类处理:区分业务异常和技术异常 - 详细日志记录:记录生成、验证、错误等关键操作 - 资源自动清理:异常情况下自动清理无效数据 ### 统计和调试支持 - 验证码统计:提供详细的使用统计和状态信息 - 调试接口:开发环境下的完整信息查看 - 性能监控:记录操作耗时和Redis连接状态 ## 潜在风险 ### Redis依赖风险 - Redis服务不可用时验证码功能完全失效 - 网络延迟可能影响验证码生成和验证性能 - 建议配置Redis高可用集群和连接池监控 ### 验证码安全风险 - 6位数字验证码存在暴力破解可能性 - 调试接口可能泄露验证码内容 - 建议生产环境禁用debugCodeInfo方法并考虑增加验证码复杂度 ### 频率限制绕过风险 - 使用不同标识符可能绕过频率限制 - 系统时间异常可能影响每小时限制计算 - 建议增加IP级别的频率限制和异常时间处理 ### 内存和性能风险 - 大量验证码生成可能占用Redis内存 - 频繁的Redis操作可能影响系统性能 - 建议监控Redis内存使用和设置合理的过期策略 ### 业务逻辑风险 - 验证码验证成功后立即删除,无法重复验证 - 冷却时间清除功能可能被滥用 - 建议根据业务需求调整验证策略和权限控制 ## 版本信息 - **版本**: 1.0.2 - **作者**: moyin - **创建时间**: 2025-12-17 - **最后修改**: 2026-01-12 - **测试覆盖**: 46个测试用例,100%通过率