跳至主要內容

quan-captcha

大约 2 分钟自定义工具配置验证码

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

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

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

提示

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

使用方法

引入工具依赖包

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

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

请求参数:

参数类型是否必须说明
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);
    }
}
上次编辑于:
贡献者: wangquan