[feat] 限制短信验证码获取频次

pull/445/head
hsdllcw 1 year ago
parent f29198fb66
commit f9cab79ead

@ -3,6 +3,7 @@ package com.ruoyi.gateway.handler;
import java.io.IOException;
import java.util.Objects;
import com.ruoyi.common.core.utils.uuid.IdUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Component;
@ -35,7 +36,10 @@ public class ValidateCodeHandler implements HandlerFunction<ServerResponse>
switch (serverRequest.queryParam("type").orElse("image")) {
case "sms":
if (Objects.nonNull(serverRequest.queryParam("receiver").orElse(null))) {
ajax = validateCodeService.createSMSCaptcha(serverRequest.queryParam("receiver").orElse(null));
ajax = validateCodeService.createSMSCaptcha(
serverRequest.queryParam("receiver").orElse(null),
serverRequest.queryParam("uuid").orElse(IdUtils.simpleUUID())
);
break;
}
default:

@ -19,7 +19,7 @@ public interface ValidateCodeService
/**
*
*/
public AjaxResult createSMSCaptcha(String receiver) throws IOException, CaptchaException;
public AjaxResult createSMSCaptcha(String receiver,String uuid) throws IOException, CaptchaException;
/**
*

@ -104,20 +104,23 @@ public class ValidateCodeServiceImpl implements ValidateCodeService
}
@Override
public AjaxResult createSMSCaptcha(String receiver) throws IOException, CaptchaException {
public AjaxResult createSMSCaptcha(String receiver, String uuid) throws IOException, CaptchaException {
AjaxResult ajax = AjaxResult.success();
boolean captchaEnabled = captchaProperties.getEnabled();
ajax.put("captchaEnabled", captchaEnabled);
if (!captchaEnabled)
{
if (!captchaEnabled) {
return ajax;
}
// 保存验证码信息
String uuid = IdUtils.simpleUUID();
String verifyKey = CacheConstants.CAPTCHA_CODE_KEY + uuid;
String code = captchaProducerNumber.createText();
redisService.setCacheObject(verifyKey, code, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES);
ajax.put("code", code);
long expire = redisService.getExpire(verifyKey);
if (expire <= 0) {
String code = captchaProducerNumber.createText();
redisService.setCacheObject(verifyKey, code, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES);
ajax.put("code", code);
expire = redisService.getExpire(verifyKey);
}
ajax.put("expire", expire);
ajax.put("uuid", uuid);
return ajax;
}

Loading…
Cancel
Save