quan-captcha
大约 2 分钟自定义工具配置验证码
quan-captcha
工具的目标是集成所有与验证码相关的功能,将该功能封装成简单易用的工具类。
工具内的图片验证码工具基于 https://github.com/bingoohuang/patchca 开发。
邮箱验证码使用随机生成的方式,然后直接发送到对应的邮箱中。
提示
图片验证码与邮箱验证码的配置一致,即生成的验证码规则一致。后期视情况扩展为单独的配置。
使用方法
引入工具依赖包
gradle
dependencies {
api project(':quan-tools:quan-captcha')
}
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
校验图片验证码(不区分大小写)
请求参数:
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
verifycode | String | 是 | 待校验的验证码 |
uuid | String | 是 | 用户唯一标识 |
返回参数:
- true:校验成功
- false:校验失败
createImage
创建图片验证码
请求参数:
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
uuid | String | 是 | 用户唯一标识 |
os | OutputStream | 是 | 用于输出生成的图片文件流 |
返回参数: 无
createEmailCode
创建邮箱验证码
请求参数:
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
String | 是 | 邮箱 | |
uuid | String | 是 | 用户唯一标识 |
返回参数: 邮箱验证码
verifyEmailCode
验证邮箱验证码
请求参数:
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
verifycode | String | 是 | 待验证的验证码 |
String | 是 | 邮箱 | |
uuid | String | 是 | 用户唯一标识 |
返回参数:
- 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);
}
}