目录

一、大致流程

二、实现代码

1、依赖

2、发送验证码

3、检查验证码


这里简单记录一下

一、大致流程
  1. 用户请求发送验证码

    • 用户输入手机号,点击获取验证码
    • 后端生成验证码并通过阿里云短信服务发送。
  2. 存储验证码

    • 将验证码和发送时间存储在Redis中,以便后续验证。
    • 设置过期时间,例如5分钟。
  3. 用户输入验证码

    • 用户输入验证码并提交。
  4. 验证验证码

    • 从Redis中获取存储的验证码进行比对。
    • 验证成功后,允许用户登录。
  5. 清除过期数据

    • 一旦验证码验证成功或过期,及时清除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;
}

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部