欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > 如何基于Redis通过对接阿里云短信服务实现验证码登录

如何基于Redis通过对接阿里云短信服务实现验证码登录

2024/10/25 6:21:19 来源:https://blog.csdn.net/weixin_65950986/article/details/142337928  浏览:    关键词:如何基于Redis通过对接阿里云短信服务实现验证码登录

目录

一、大致流程

二、实现代码

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;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com