[feat] 限制短信验证码获取频次
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…
Reference in New Issue