目录
这里简单记录一下
一、大致流程
-
用户请求发送验证码:
- 用户输入手机号,点击获取验证码
- 后端生成验证码并通过阿里云短信服务发送。
-
存储验证码:
- 将验证码和发送时间存储在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;
}
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » 如何基于Redis通过对接阿里云短信服务实现验证码登录
发表评论 取消回复