| | |
| | | } |
| | | |
| | | /** |
| | | * 校验登录验证码,成功后销毁缓存中的一次性验证码。 |
| | | * 校验登录验证码,缓存有效期内允许重复提交。 |
| | | */ |
| | | public void validateLoginCode(String phone, String code) { |
| | | validateCode(phone, code, LOGIN_CODE_CACHE_PREFIX, SCENE_LOGIN); |
| | | } |
| | | |
| | | /** |
| | | * 校验注册验证码,成功后销毁缓存中的一次性验证码。 |
| | | * 校验注册验证码,缓存有效期内允许重复提交。 |
| | | */ |
| | | public void validateRegisterCode(String phone, String code) { |
| | | validateCode(phone, code, REGISTER_CODE_CACHE_PREFIX, SCENE_REGISTER); |
| | | } |
| | | |
| | | /** |
| | | * 校验忘记密码验证码,成功后销毁缓存中的一次性验证码。 |
| | | * 校验忘记密码验证码,缓存有效期内允许重复提交。 |
| | | */ |
| | | public void validatePasswordResetCode(String phone, String code) { |
| | | validateCode(phone, code, PASSWORD_RESET_CODE_CACHE_PREFIX, SCENE_PASSWORD_RESET); |
| | | } |
| | | |
| | | /** |
| | | * 校验修改手机号验证码,成功后销毁缓存中的一次性验证码。 |
| | | * 校验修改手机号验证码,缓存有效期内允许重复提交。 |
| | | */ |
| | | public void validatePhoneChangeCode(String phone, String code) { |
| | | validateCode(phone, code, PHONE_CHANGE_CODE_CACHE_PREFIX, SCENE_PHONE_CHANGE); |
| | |
| | | } |
| | | |
| | | /** |
| | | * 统一校验指定场景的验证码并执行一次性销毁。 |
| | | * 统一校验指定场景的验证码,验证码仅按缓存 TTL 自然失效。 |
| | | */ |
| | | private void validateCode(String phone, String code, String cachePrefix, String scene) { |
| | | if (matchesDebugCode(scene, code)) { |
| | |
| | | if (!cachedCode.equals(code)) { |
| | | throw new IllegalArgumentException("验证码错误"); |
| | | } |
| | | // 验证码登录成功后立即删除,避免重复使用。 |
| | | stringRedisTemplate.delete(cacheKey); |
| | | } |
| | | |
| | | /** |