目录
一、大致流程
二、实现代码
1、依赖
2、发送验证码
3、检查验证码
这里简单记录一下
一、大致流程
-
用户请求发送验证码:
- 用户输入手机号,点击获取验证码
- 后端生成验证码并通过阿里云短信服务发送。
-
存储验证码:
- 将验证码和发送时间存储在Redis中,以便后续验证。
- 设置过期时间,例如5分钟。
-
用户输入验证码:
- 用户输入验证码并提交。
-
验证验证码:
- 从Redis中获取存储的验证码进行比对。
- 验证成功后,允许用户登录。
-
清除过期数据:
- 一旦验证码验证成功或过期,及时清除Redis中的记录。
二、实现代码
1、依赖
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-sms</artifactId><version>你的版本号</version>
</dependency>
2、发送验证码
@Autowired
private StringRedisTemplate stringRedisTemplate;@Autowired
private DefaultProfile profile;@Autowired
private IAcsClient acsClient;public void sendSms(String phoneNumber) {String code = String.valueOf(new Random().nextInt(899999) + 100000); // 生成6位验证码// 发送短信SendSmsRequest request = new SendSmsRequest();request.setPhoneNumbers(phoneNumber);request.setSignName("你的短信签名");request.setTemplateCode("你的短信模板");request.setTemplateParam("{\"code\":\"" + code + "\"}");try {acsClient.getAcsResponse(request);// 存储验证码到Redis,设置过期时间为5分钟stringRedisTemplate.opsForValue().set("sms:" + phoneNumber, code, 5, TimeUnit.MINUTES);} catch (Exception e) {e.printStackTrace();}
}
3、检查验证码
public boolean verifySmsCode(String phoneNumber, String code) {String storedCode = stringRedisTemplate.opsForValue().get("sms:" + phoneNumber);if (storedCode != null && storedCode.equals(code)) {// 验证成功,清除Redis中的验证码stringRedisTemplate.delete("sms:" + phoneNumber);return true;}return false;
}