我们在项目中经常遇到 需要通过手机号发送验证码实现登录注册等功能。
这里讲一下,Springboot项目中如果通过阿里云的短信功能, 实现发送手机验证码并验证

一、准备工作

1、购买阿里云的短信服务

https://free.aliyun.com/product/cloudcommunication-free-trial

新用户有免费试用产品

个人使用的话,有3个月内100条的免费服务,如果学习的话,足够用了,否则还需要充钱!!!

2、购买后,设置 AccessKey


阿里云会自动获取绑定的手机号,你只需要获取短信验证码就可以创建成功。

3、设置签名

4、添加模板

开发

开发者可以按照阿里云的这个开发者手册开发。

https://help.aliyun.com/document_detail/101300.html?spm=a2c4g.11186623.6.610.5ed850a4DjrhHY

发送短信这个接口如何调用? 这个网址还提供了调试功能,很方便。

https://help.aliyun.com/document_detail/101414.html?spm=a2c4g.11186623.6.624.15b85f30AyGxea


我们可以直接调用 阿里云为我们提供的API

这里只用自定义的方法

1、导入依赖

<dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>4.5.3</version>
</dependency>
<dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-dysmsapi</artifactId><version>1.1.0</version>
</dependency>

2、编写工具类

这里自定义工具类进行使用

/*** description:** @author su* @date 2022/2/15 14:41*/
@Component
public class SMSUtils {private static final Logger log = LoggerFactory.getLogger(SMSUtils.class);@Value("${sms.accessKeyId}")private String accessKeyId;@Value("${sms.secret}")private String secret;@Value("${sms.signName}")private String signName; // 短信签名@Value("${sms.templateCode}")private String templateCode;  //短信模板@Value("${sms.regionId}")private String regionId;   // 短信服务器区域public void sendMsg(String phone, String code) {DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, secret);DefaultAcsClient client = new DefaultAcsClient(profile);CommonRequest request = new CommonRequest();request.setSysMethod(MethodType.POST);//下面两个不能动request.setSysProduct("Dysmsapi");request.setSysDomain("dysmsapi.aliyuncs.com");request.setSysVersion("2017-05-25");request.setSysAction("SendSms");//自定义参数(手机号,验证码,签名,模板)request.putQueryParameter("RegoinId", regionId);request.putQueryParameter("PhoneNumbers", phone);request.putQueryParameter("SignName", signName); //填自己申请的名称request.putQueryParameter("TemplateCode", templateCode);request.putQueryParameter("TemplateParam", "{\"code\":\"" + code + "\"}");try {CommonResponse response = client.getCommonResponse(request);log.info("阿里云短信响应信息:" + response.getData());boolean success = response.getHttpResponse().isSuccess();log.info("短信发送是否成功:" + success);} catch (ClientException e) {e.printStackTrace();}}
}

这些变量放在配置文件中,方便维护

sms:accessKeyId: LTAI5tGF2kkoJbB9ftdH2DwTsecret: YYc2CShh6RVZmMuhQzifAXS5WimvuIsignName: 青橙小店templateCode: SMS_217145407regionId: cn-hangzhou
@RestController
@RequestMapping("admin")
public class UserController {private static final Logger log = LoggerFactory.getLogger(UserController.class);@Autowiredprivate RedisTemplate redisTemplate;@Autowiredpublic SMSUtils smsUtils;@PostMapping("/code")public void sendMsg(@RequestBody MsgVo msgVo) {if (redisTemplate.hasKey("TOMEOUT:" + msgVo.getPhone())) {throw new RuntimeException("不允许重复发送");}String code = RandomStringUtils.randomNumeric(4);log.info("发送的验证码:{}" + code);smsUtils.sendMsg(msgVo.getPhone(), code);redisTemplate.opsForValue().set(msgVo.getPhone(), code, 60, TimeUnit.SECONDS);redisTemplate.opsForValue().set("TOMEOUT:" + msgVo.getPhone(), true, 10, TimeUnit.MINUTES);}
}

启动测试

SpringBoot 通过阿里云的短信功能 实现发送手机验证码相关推荐

  1. (短信服务)java SpringBoot 阿里云短信功能实现发送手机验证码

    一.阿里云准备工作 1.阿里云短信服务-注册账号 阿里云官网: https://www.aliyun.com/ 点击官网首页注册按钮. 2.阿里云短信服务-设置短信签名(阿里云提供测试的签名,暂时可以 ...

  2. 一小时学会使用SpringBoot整合阿里云SMS短信服务

    1. 登录阿里云进入控制台 进入阿里云控制台,https://home.console.aliyun.com/在个人头像位置点击进入AccessKey管理: 2. 创建用户和用户组 创建用户组 添加完 ...

  3. SpringBoot+vue 使用阿里云的短信功能发送手机验证码

    前言: 小编后端用的是Springboot 前端用的是vue ,小编主要是写后台,前端页面比较简陋,后期还要调优,写的不对处还望多多包涵. 环境: 需要先准备好阿里云的账号和一些必要的参数.详情见我的 ...

  4. Java实现阿里云发短信功能

    一 点睛 1 阿里云短信开发文档 https://helpcdn.aliyun.com/document_detail/55284.html 2 阿里云AK申请 https://usercenter. ...

  5. 亿级高并发电商项目-- 实战篇 --万达商城项目 十二(编写用户服务、发送短信功能、发送注册验证码功能、手机号验证码登录功能、单点登录等模块)

  6. 使用阿里云的短信服务发送短信

    原文地址使用阿里云的短信服务发送短信 在给客户开发一个信息发送功能的时候,需要涉及到短信的发送,短信发送一般不同的厂商提供的接口不同,处理方式也不太一样,之前用的一个厂商的,提供了一个封装类就很容易发 ...

  7. 2021最新 使用阿里云的短信服务发送短信

    在给客户开发一个信息发送功能的时候,需要涉及到短信的发送,短信发送一般不同的厂商提供的接口不同,处理方式也不太一样,之前用的一个厂商的,提供了一个封装类就很容易发送短息,因此都是基于HTTP协议做的一 ...

  8. 使用阿里云的短信服务进行登录实现登录拦截的功能(前后端分离) ---- (Session存储验证码用户信息)

    使用阿里云的短信服务进行登录&实现登录拦截的功能(Session存储 开通短信服务 获取AccessKey 搭建前端环境 搭建后端环境 实体类 Dao层 业务层 控制层 配置类 工具类 开通短 ...

  9. springboot开发基于阿里云的短信服务、邮件推送服务

    短信服务以及邮件推送服务使用的都是阿里云的产品,短信服务是收费的,所以需要选择短信服务的套餐并预充值才能使用.邮件推送服务是有200条的免费额度. 一:短信服务 1.申请短信签名.短信模板 到阿里云的 ...

  10. 阿里云的短信验证功能实现

    阿里云的短信验证功能实现 第一步:申请 签名,模板,RAM访问控制 签名 模板 RAM访问控制 创建用户 创建完一定要保存 这个 截图里面的参数 这只能看一次 创建完成,添加授权 搜索 短信 添加 管 ...

最新文章

  1. 程序员需要有多懒 ?- cocos2d-x 数学函数、常用宏粗整理 - by Glede
  2. 影响SEO网站文章收录的因素有哪些?
  3. 图片的批量下载 和 爬虫爬取图片数据集
  4. C/C++中.和-的用法区别
  5. DataGrid内容的导出
  6. python字符串注释_python字符串注释_Python学习笔记-字符串与注释
  7. python 并行计算库_Python 大规模数据存储与读取、并行计算:Dask库简述
  8. ORA-29339错误解决办法
  9. RouterOS SOCKS代理服务器(官方文档翻译)
  10. c++ 函数返回空_Python all() 函数
  11. java马克思手稿_java 循环嵌套解决一元,二元,三元方程(增长率,鸡兔同笼,马克思手稿)...
  12. String int之间转换
  13. 【风马一族_软件】微软卸载工具_msicuu2.exe
  14. inventor弧度怎么标注_家里房间太大,WiFi信号覆盖不了怎么办?网件新作:分身术...
  15. Python:运营自媒体,如何修改图片的MD5值
  16. Unity发布ios和Android获取相机权限的相关问题
  17. 23年 yolov5车辆识别+行人识别+车牌识别+车速检测代码(python)
  18. 计算机主机开机为什么显示器不开,电脑显示屏不亮但是主机已开机怎么解决
  19. echarts 雷达图
  20. ibm电脑服务器郑州维修,郑州IBM ThinkPad笔记本芯片级维修中心

热门文章

  1. 计算机在小学英语中的应用,计算机在小学英语教学中的应用.doc
  2. vue项目中配置跨域
  3. 7z命令行压缩加密文件
  4. 中国计算机类核心期刊
  5. 手机连接360免费WIFI一直显示正在获取IP地址、无法连接的解决方法
  6. 配合python的rich库实现高颜值LOL服务器状态查询
  7. COMSOL中的基础概念
  8. 小程序点击图片全屏播放视频
  9. python set去重
  10. 静态网站生成器(开源项目)