跳到主要内容

quan-captcha

quan-captcha工具的目标是集成所有与验证码相关的功能,将该功能封装成简单易用的工具类。

工具内的图片验证码工具基于 https://github.com/bingoohuang/patchca 开发。

邮箱验证码使用随机生成的方式,然后直接发送到对应的邮箱中。

提示

图片验证码与邮箱验证码的配置一致,即生成的验证码规则一致。后期视情况扩展为单独的配置。

使用方法

1、引入工具依赖包

提示

工具包目前只在quan-tools模块中,需要通过quan-tools引入。 后期视具体需求决定是否上传到 Maven 仓库。

dependencies {
api project(':quan-tools:quan-captcha')
}

2、yml配置:

示例配置仅供参考
quan:
captcha:
maxLength: 6
minLength: 4
characters: 1234567890
invalidTime: 300

配置参数说明

maxLength

  • 类型:int
  • 默认: 4

配置验证码随机获取字符串的最多数量

minLength

  • 类型:int
  • 默认: 4

配置验证码随机获取字符串的最少数量

characters

  • 类型:string
  • 默认: 1234567890

配置基础字符集合,用于随机获取字符串的字符集合

invalidTime

  • 类型:long
  • 默认: 300

配置验证码缓存的最大时间,单位:秒

工具类说明-CaptchaService

verifyImageCode

校验图片验证码(不区分大小写)

请求参数:

参数类型是否必须说明
verifycodeString待校验的验证码
uuidString用户唯一标识

返回参数:

  • true:校验成功
  • false:校验失败

createImage

创建图片验证码

请求参数:

参数类型是否必须说明
uuidString用户唯一标识
osOutputStream用于输出生成的图片文件流

返回参数: 无

createEmailCode

创建邮箱验证码

请求参数:

参数类型是否必须说明
emailString邮箱
uuidString用户唯一标识

返回参数: 邮箱验证码

verifyEmailCode

验证邮箱验证码

请求参数:

参数类型是否必须说明
verifycodeString待验证的验证码
emailString邮箱
uuidString用户唯一标识

返回参数:

  • true:校验成功
  • false:校验失败

应用示例


@RequiredArgsConstructor
@Component
public class Test {
private final CaptchaService captchaService;

// 创建邮箱验证码
public void createEmailCode(String email, HttpServletRequest request) {
String sessionId = request.getSession().getId();
String code = captchaService.createEmailCode(sessionId, email);
// 将验证码发送到邮箱
// ...
}

// 校验邮箱验证码
public void verifyEmailCode(String code, String email, HttpServletRequest request) {
String sessionId = request.getSession().getId();
boolean flag = captchaService.verifyEmailCode(code, sessionId, email);
}

// 创建图片验证码
public void generateImageCode(HttpServletRequest request, HttpServletResponse response) {
String sessionId = request.getSession().getId();
setResponseHeaders(response, HttpStatus.ACCEPTED);
try {
captchaService.createImage(sessionId, response.getOutputStream());
} catch (IOException e) {
throw new RuntimeException(e);
}
}

// 校验图片验证码
public void verifyImageCode(String code, HttpServletRequest request) {
String sessionId = request.getSession().getId();
boolean flag = captchaService.verifyImageCode(code, sessionId);
}
}