# 短信验证码
# 1.概述
短信验证码用于发送验证码和校验验证码有效性。其中发送短信验证码依赖于短信功能
# 2.配置
# 2.1 yml配置
使用短信验证码功能时,需要到application-xx.yml加入以下配置
smscaptcha:
templateId: 1
smsSp: rly
validField: 1
timeField: 2
- yml配置参数信息说明
属性名 | 属性说明 |
---|---|
templateId | 发送验证码时所使用的模板id |
smsSp | 短信服务商 |
validField | 验证码后所需要替换的参数 |
timeField | 有效时长 |
# 2.2 验证码生成配置
使用验证码功能,需要对验证码的生成规则,有效时间,长度进行维护;详情参见验证验证码
# 3.发送短信验证码
在yml文件中维护完验证码必要参数以后,通过调用CaptchaUtil.sendCaptcha()方法来发送验证码;部分代码如下
/**
*@Description: 通过手机号发送验证码
* @param phone:
* @return: java.lang.String
*@auth:whh
*@date 2022/12/24
**/
public static CaptchaSendVO sendCaptcha(String phone){
CaptchaSendVO captchaSendVO=new CaptchaSendVO();
CaptchaVO captchaVO = smsCaptchaService.generateCaptcha();//获取到配置的有效时长,以及生成的验证码
LinkedHashMap<String,String> params=new LinkedHashMap<>(2);
...
}
短信验证码发送成功以后,会生成一个唯一标识码封装到CaptchaSendVO返回。
# CaptchaSendVO对象说明
/**
* @Description: TODO
* @author: whh
* @Date: 2022-12-24 11:11
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class CaptchaSendVO {
/**
*@Description:本次的标志
* @param null:
* @return: null
*@auth:whh
*@date 2022/12/24
**/
private String denote;
/**
*@Description:手机号
* @param null:
* @return: null
*@auth:whh
*@date 2022/12/24
**/
private String phone;
/**
*@Description:验证码值
* @param null:
* @return: null
*@auth:whh
*@date 2022/12/24
**/
private String captcha;
# 4.验证验证码
调用CaptchaUtil.checkCaptcha()方法来校验验证码;代码如下
/**
*@Description:校验验证码
* @return: boolean
*@auth:whh
*@date 2022/12/24
**/
public static boolean checkCaptcha(CaptchaSendVO vo){
return Optional.ofNullable(CacheTenantUtil.get(SmsCaptchaConstant.CAPTCHA_CACHE,vo.getPhone()+ StringPool.COLON+vo.getDenote()))
.map(capt->CommonUtils.equals(capt,vo.getCaptcha())).orElse(false);
}
将发送验证码返回的CaptchaSendVO对象,作为入参传入验证验证码。
# 5.短信验证码配置
# 1.概述
短信验证码配置主要是为验证码的有效时间以及生成规则;主要功能包含:查询验证码、维护验证码。
# 2.查询验证码
【菜单路径】:系统管理—->短信验证码配置
# 3.维护验证码
点击进入验证码页签加载验证码以后,即可对短信验证码的数据进行操作,如下图所示:
- 短信验证码参数信息说明
属性名 | 属性说明 |
---|---|
组合 | 生成短信验证码时字符串集合包含哪些 |
长度 | 生成验证码的长度 |
有效时间 | 验证码生效的最长时间 |