介绍
对外提供图片,邮箱,短信,三种方式的验证,简化基于各种类型验证码的开发,其图片验证码代码来源于 RuoYi-Vue-Plus 代码,在此基础上进行微调和二次封装。
依赖库
名称 | 描述 |
---|---|
zebra-spring-boot-starter-cache | |
commons-lang3 | |
zebra-spring-boot-starter-message |
快速开始
引入
xml
<dependency>
<groupId>io.github.zhanghongbin</groupId>
<artifactId>zebra-spring-boot-starter-captcha</artifactId>
</dependency>
邮件 application.yml 文件配置如下:
yml
zebra:
captcha:
mail:
mail-title:
mail-content: 您本次验证码为:{},有效期为{}分钟,请尽快填写。
mail-content 有两个变量分别为验证码和时间,用{}作为变量占位符。
短信 application.yml 文件配置如下:
yml
zebra:
captcha:
sms:
template-id: 模版id
code-variable-name: 验证码变量名称
expiration-time-variable-name: 过期时间变量名称
验证码发送服务
1. 短信验证码
获取短信验证码(1分钟内,只能发送一次,暂时没有放开此配置)
服务地址 | 方法 | 描述 |
---|---|---|
/captcha/sms/code?phoneNumber=xxx | GET 请求方法 | phoneNumber 为手机号 |
2. 邮箱验证码
服务地址 | 方法 | 描述 |
---|---|---|
/captcha/email/code?email=xxx | GET 请求方法 | email 邮箱 |
3. 图片验证码
获取图片验证码(1分钟内,同一ip地址只能发送10次以下,并且验证码2分钟内有效,暂时没有放开此配置)
服务地址 | 方法 | 描述 |
---|---|---|
/captcha/picture/code | GET 请求方法 | 无参数,返回值为以下格式 |
json
{
"code":0,
"msg":"",
"data":{
"enabled":true,
"uuid":"",
"img":""
}
}
enabled 是否开启验证码
uuid 唯一标识
img base64加密图片
验证码验证
短信验证码验证
获取 SmsCaptchaHandler 对象,然后调用check接口
java
@Autowired
private SmsCaptchaHandler smsCaptchaHandler;
public void test() {
//第一个参数为手机号,第二个参数为验证码
boolean flag = smsCaptchaHandler.check(phonenumber, smsCode);
}
邮箱验证码验证
获取 MailCaptchaHandler 对象,然后调用check接口
java
@Autowired
private MailCaptchaHandler mailCaptchaHandler;
public void test() {
//第一个参数为邮箱号,第二个参数为验证码
boolean flag = mailCaptchaHandler.check(mail, smsCode);
}
图片验证码验证
获取 PictureCaptchaHandler 对象,然后调用check接口
java
@Autowired
private PictureCaptchaHandler pictureCaptchaHandler;
@Autowired
private PictureCaptchaProperties pictureCaptchaProperties
public void test() {
//第一个参数为返回给前端的唯一标识,第二个参数为验证码
boolean flag = pictureCaptchaHandler.check(uuid, code);
//pictureCaptchaProperties 可以获取是否启用验证码
boolean enabled = captchaProperties.isEnabled();
}