整合阿里云短信进行短信发送(2) | 学习笔记

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 快速学习 整合阿里云短信进行短信发送(2)

开发者学堂课程【微服务+全栈在线教育实战项目演练(SpringCloud Alibaba+SpringBoot)整合阿里云短信进行短信发送(2)学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/667/detail/11445


整合阿里云短信进行短信发送(2)


内容介绍

一.Redis 解决验证码有效时间问题

二.测试阿里云短信服务功能


try {

//最终发送

CommonResponse response=client.get CommonResponse (request);

boolean success = response.getHttpResponse().isSuccess();

return success;

}catch(Exception e) {

e.print.StackTrace();

return false;

在 msm.controller 中,

手机验证码中通常有这样一句话,验证码在多少多少分钟内有效。

那在程序中应该如何表达在五分钟内有效?


一.Redis 解决验证码有效时间问题

发送成功以后,把验证码放到 redis 中,并且设置有效时间。取的时候就直接取出来,如果不能直接取,再用阿里云发送。

上次课用 redis 是为了缓存,我们这次用 redis 是为了设置有效时间,也就是说用 redis 的方式和之前相比也发生了改变。

在 string boot 整合 redis 的时候,它封装了一个对象。

@Autowired

private RedisTemplate<String,String> redisTemplate;

//发送短信的方法

@GetMapping("send/{phone}“)

public R sendMsm(@PathVariable String phone){

//1从 redis 获取验证码,如果获取到直接返回

String  code  =redisTemplate.opsForValue().get(phone) ;

if(!StringUtils.isEmpty(code)){

return R.ok();

}

//2 如果 redis 获取不到,进行阿里云发送

//生成随机值,传递阿里云进行发送

code =RandomUtil.getFourBitRandom();

Map<String,Object>param=new  HashMap<>() param.put("code",code);

//调用 service 发送短信的方法

boolean isSend = msmService.send(param,phone);

if(isSend) {

//发送成功,把发送成功验证码放到 redis 里面

//设置有效时间

redisTemplate.opsForValue().set(phone,code,I:5,TimeUnit. MINUTES);

}else{

return R.ok(); I

return R.error().message(“短信发送失败”)


二.测试阿里云短信服务功能

打开 service_msm 中的 application.properties,看到目前的端口号是8005。

在启动类 MsmApplication 中,右键点击 Run‘MsmApplication’启动 swagger 测试。

启动之后,可以看到控制台中列出发送量统计、费用统计等等。

在搜索中直接输入地址 localhost:8005/swagger-ui.html,然后按回车键进入 swagger 页面。

image.png

点击蓝色处方法进入,在 phone 处输入手机号,点击 try it out,就会把通过工具类生成的四位验证码发送到手机上,手机收到验证码后,阿里云发送量统计中会有显示。

验证码会有提示信息,前面是【】,里面是签名名称,然后是模板内容。

而后把这个功能整合到注册或登录中,在注册或登录的时候发送验证码。

相关文章
|
安全 算法 Java
SpringSecurity 快速入门
SpringSecurity 快速入门
276 3
|
8月前
|
NoSQL Java Redis
springboot怎么使用Redisson
通过以上步骤,已经详细介绍了如何在Spring Boot项目中使用Redisson,包括添加依赖、配置Redisson、创建配置类以及使用Redisson实现分布式锁和分布式集合。Redisson提供了丰富的分布式数据结构和工具,可以帮助开发者更高效地实现分布式系统。通过合理使用这些工具,可以显著提高系统的性能和可靠性。
2873 34
|
8月前
|
关系型数据库 数据库 对象存储
Dify实践|Dify on DMS+对象存储OSS,实现多副本部署方案
本文介绍了在DMS上部署Dify的详细步骤,用户可选择一键购买资源或基于现有资源部署Dify,需配置RDS PostgreSQL、Redis、AnalyticDB for PostgreSQL等实例,并设置存储路径和资源规格。文中还提供了具体配置参数说明及操作截图,帮助用户顺利完成部署。
|
9月前
|
NoSQL Java API
Redisson分布式锁使用详解
通过以上内容,您可以全面了解如何在Java项目中使用Redisson实现分布式锁,并根据不同的业务需求选择合适的锁机制。
812 33
|
9月前
|
机器学习/深度学习 存储 人工智能
2025年NVIDIA RTX 4090云服务器租赁价格与选型指南
本文探讨了在主流云服务商尚未提供RTX 4090实例的背景下,如何选择高性能GPU服务器。分析了市场现状、替代方案性能,并推荐阿里云的GN7i(NVIDIA A10)、GN6v(NVIDIA V100)等实例,提供了成本优化策略与选型建议,确保用户在AI训练、图形渲染等场景中实现效率和成本的最佳平衡。
|
存储 关系型数据库 MySQL
【MySQL】在 Centos7 环境安装 MySQL -- 详细完整教程
【MySQL】在 Centos7 环境安装 MySQL -- 详细完整教程
|
数据可视化
Echarts高级进阶教程(3):appendData大数据量分片加载数据增量渲染和常规思路异步加载数据的对比,对折线图是无效的
Echarts高级进阶教程(3):appendData大数据量分片加载数据增量渲染和常规思路异步加载数据的对比,对折线图是无效的
937 0
|
搜索推荐 关系型数据库 MySQL
MySQL中的模糊匹配技巧:无需ES的高效实现
在数据库应用中,模糊匹配是一个常见的需求,尤其在处理搜索功能时。虽然Elasticsearch(ES)等搜索引擎在处理文本搜索方面表现出色,但在一些场景下,直接使用MySQL数据库实现模糊匹配也是一个经济且高效的选择。本文将分享如何在不引入ES的情况下,利用MySQL实现模糊匹配的五大步骤和十个实战案例。
886 1