mirror of
https://github.com/xinnan-tech/xiaozhi-esp32-server.git
synced 2026-07-22 07:03:53 +08:00
验证模块添加发送短信验证码和验证短信验证码
--CaptchaService.java 新增发送短信验证码和验证短信验证码方法定义 --CaptchaServiceImpl.java 实现新定义定义的方法 --RedisKeys.java 添加短信验证码key
This commit is contained in:
@@ -117,4 +117,12 @@ public class RedisKeys {
|
||||
public static String getAgentAudioIdKey(String uuid) {
|
||||
return "agent:audio:id:" + uuid;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取短信验证码的缓存key
|
||||
*/
|
||||
public static String getSMSValidateCodeKey(String phone) {
|
||||
return "sms:Validate:Code:" + phone;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+12
-1
@@ -18,10 +18,21 @@ public interface CaptchaService {
|
||||
|
||||
/**
|
||||
* 验证码效验
|
||||
*
|
||||
* @param uuid uuid
|
||||
* @param code 验证码
|
||||
* @return true:成功 false:失败
|
||||
*/
|
||||
boolean validate(String uuid, String code);
|
||||
|
||||
/**
|
||||
* 发送短信验证码
|
||||
* @param phone 手机
|
||||
*/
|
||||
void sendSMSValidateCode(String phone);
|
||||
|
||||
/**
|
||||
* 验证短信验证码
|
||||
* @param phone 手机
|
||||
*/
|
||||
boolean validateSMSValidateCode(String phone,String code);
|
||||
}
|
||||
|
||||
+33
@@ -1,6 +1,7 @@
|
||||
package xiaozhi.modules.security.service.impl;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Random;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
@@ -17,6 +18,7 @@ import jakarta.servlet.http.HttpServletResponse;
|
||||
import xiaozhi.common.redis.RedisKeys;
|
||||
import xiaozhi.common.redis.RedisUtils;
|
||||
import xiaozhi.modules.security.service.CaptchaService;
|
||||
import xiaozhi.modules.sms.service.SmsService;
|
||||
|
||||
/**
|
||||
* 验证码
|
||||
@@ -25,6 +27,8 @@ import xiaozhi.modules.security.service.CaptchaService;
|
||||
public class CaptchaServiceImpl implements CaptchaService {
|
||||
@Resource
|
||||
private RedisUtils redisUtils;
|
||||
@Resource
|
||||
private SmsService smsService;
|
||||
@Value("${renren.redis.open}")
|
||||
private boolean open;
|
||||
/**
|
||||
@@ -66,6 +70,35 @@ public class CaptchaServiceImpl implements CaptchaService {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendSMSValidateCode(String phone) {
|
||||
String key = RedisKeys.getSMSValidateCodeKey(phone);
|
||||
String validateCodes = generateValidateCode(6);
|
||||
setCache(key,validateCodes);
|
||||
//发送验证码短信
|
||||
smsService.sendVerificationCodeSms(phone,validateCodes);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean validateSMSValidateCode(String phone,String code) {
|
||||
String key = RedisKeys.getSMSValidateCodeKey(phone);
|
||||
return validate(key, code);
|
||||
}
|
||||
/**
|
||||
* 生成指定数量的随机数验证码
|
||||
* @param length 数量
|
||||
* @return 随机码
|
||||
*/
|
||||
private String generateValidateCode(Integer length) {
|
||||
String chars = "0123456789"; // 字符范围可以自定义:数字
|
||||
Random random = new Random();
|
||||
StringBuilder code = new StringBuilder();
|
||||
for (int i = 0; i < length; i++) {
|
||||
code.append(chars.charAt(random.nextInt(chars.length())));
|
||||
}
|
||||
return code.toString();
|
||||
}
|
||||
|
||||
private void setCache(String key, String value) {
|
||||
if (open) {
|
||||
key = RedisKeys.getCaptchaKey(key);
|
||||
|
||||
Reference in New Issue
Block a user