mirror of https://gitee.com/stylefeng/roses
【7.0.4】【captcha】更新异常提示
parent
10b46c020e
commit
4bb50765f4
|
@ -41,7 +41,12 @@ public enum SecurityExceptionEnum implements AbstractExceptionEnum {
|
||||||
/**
|
/**
|
||||||
* 生成验证码错误
|
* 生成验证码错误
|
||||||
*/
|
*/
|
||||||
CAPTCHA_ERROR(RuleConstants.BUSINESS_ERROR_TYPE_CODE + SecurityConstants.SECURITY_EXCEPTION_STEP_CODE + "01", "生成验证码错误");
|
CAPTCHA_ERROR(RuleConstants.BUSINESS_ERROR_TYPE_CODE + SecurityConstants.SECURITY_EXCEPTION_STEP_CODE + "01", "生成验证码错误"),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 验证码过期,请从新生成验证码
|
||||||
|
*/
|
||||||
|
CAPTCHA_INVALID_ERROR(RuleConstants.BUSINESS_ERROR_TYPE_CODE + SecurityConstants.SECURITY_EXCEPTION_STEP_CODE + "02", "验证码过期,请从新生成验证码");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 错误编码
|
* 错误编码
|
||||||
|
|
|
@ -35,6 +35,7 @@ import cn.stylefeng.roses.kernel.security.api.exception.SecurityException;
|
||||||
import cn.stylefeng.roses.kernel.security.api.exception.enums.SecurityExceptionEnum;
|
import cn.stylefeng.roses.kernel.security.api.exception.enums.SecurityExceptionEnum;
|
||||||
import cn.stylefeng.roses.kernel.security.api.pojo.DragCaptchaImageDTO;
|
import cn.stylefeng.roses.kernel.security.api.pojo.DragCaptchaImageDTO;
|
||||||
import cn.stylefeng.roses.kernel.security.captcha.util.DragCaptchaImageUtil;
|
import cn.stylefeng.roses.kernel.security.captcha.util.DragCaptchaImageUtil;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayInputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
@ -45,6 +46,7 @@ import java.io.IOException;
|
||||||
* @author fengshuonan
|
* @author fengshuonan
|
||||||
* @date 2021/7/5 11:34
|
* @date 2021/7/5 11:34
|
||||||
*/
|
*/
|
||||||
|
@Slf4j
|
||||||
public class DragCaptchaService implements DragCaptchaApi {
|
public class DragCaptchaService implements DragCaptchaApi {
|
||||||
|
|
||||||
private final CacheOperatorApi<String> cacheOperatorApi;
|
private final CacheOperatorApi<String> cacheOperatorApi;
|
||||||
|
@ -57,6 +59,7 @@ public class DragCaptchaService implements DragCaptchaApi {
|
||||||
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(Base64.decode(DragCaptchaImageUtil.IMAGE_BASE64));
|
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(Base64.decode(DragCaptchaImageUtil.IMAGE_BASE64));
|
||||||
try {
|
try {
|
||||||
DragCaptchaImageDTO dragCaptchaImageDTO = DragCaptchaImageUtil.getVerifyImage(byteArrayInputStream);
|
DragCaptchaImageDTO dragCaptchaImageDTO = DragCaptchaImageUtil.getVerifyImage(byteArrayInputStream);
|
||||||
|
|
||||||
// 缓存x轴坐标
|
// 缓存x轴坐标
|
||||||
String verKey = IdUtil.simpleUUID();
|
String verKey = IdUtil.simpleUUID();
|
||||||
Integer verValue = dragCaptchaImageDTO.getLocationX();
|
Integer verValue = dragCaptchaImageDTO.getLocationX();
|
||||||
|
@ -82,8 +85,14 @@ public class DragCaptchaService implements DragCaptchaApi {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 获取缓存中正确的locationX的值
|
||||||
|
String locationXString = cacheOperatorApi.get(verKey);
|
||||||
|
if (StrUtil.isEmpty(locationXString)) {
|
||||||
|
throw new SecurityException(SecurityExceptionEnum.CAPTCHA_INVALID_ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
// 获取缓存中存储的范围
|
// 获取缓存中存储的范围
|
||||||
Integer locationX = Convert.toInt(cacheOperatorApi.get(verKey));
|
Integer locationX = Convert.toInt(locationXString);
|
||||||
int beginScope = locationX - 5;
|
int beginScope = locationX - 5;
|
||||||
int endScope = locationX + 5;
|
int endScope = locationX + 5;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue