手把手教你使用短信验证码「含源码」

阿里云短信验证码

1、注册信息

进入阿里云官网并登录

选择「AccessKey管理」

AccessKey

开始使用子用户AccessKey

开始使用

使用新版本的Web页面

选择新版

新建「用户组」

用户组

编辑用户组权限

搜索「sms」,添加「AliyunDysmsFullAccess

添加权限

创建用户(保存得到的AccessKey「id,密码」,一定不能泄露,如若泄露,立即禁用或删除AccessKey

创建用户

添加用户到组

添加用户到组

2、开通服务

控制台主页搜索「短信服务」

短信服务

开通「短信服务」0.045/条

开通

添加短信模板、等待审核「20分钟」

申请说明一定不能乱填,不然审核不通过

添加模板

输入模板信息

添加签名、等待审核「20分钟」

申请说明一定不能乱填,不然审核不通过

输入签名信息

短信服务帮助文档

说明

3、编写测试代码

添加Maven依赖

<!-- 短信服务 -->
<dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>4.1.0</version>
</dependency>
<!-- fastjson -->
<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.68</version>
</dependency>
<!-- redis,验证码一般有过期时间,放在redis中储存 -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

进行单元测试

测试短信能否发送成功

有些包需要手动导入,导入与aliyun相关的依赖

 @Testpublic void contextLoads() {//连接阿里云DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou","你的AccessKey ID ","你的AccessKey Secret");IAcsClient client = new DefaultAcsClient(profile);//构建请求,默认即可CommonRequest request = new CommonRequest();request.setMethod(MethodType.POST);request.setDomain("dysmsapi.aliyuncs.com");   //不要动request.setVersion("2017-05-25");             //不要动request.setAction("SendSms");//自定义的参数(手机号,验证码,签名,模板)request.putQueryParameter("PhoneNumbers", "接收信息的手机号");request.putQueryParameter("SignName", "你的短信服务的签名名称");//短信服务中「签名名称」request.putQueryParameter("TemplateCode", "你的短信服务的模版CODE"); //短息服务中「模版CODE」//构建一个短信的验证码「这里为写死的验证码」HashMap<String, Object> map = new HashMap<>();map.put("code",2233);request.putQueryParameter("TemplateParam", JSONObject.toJSONString(map));//JSONObject使用前面Maven导入到fastjson依赖try {CommonResponse response = client.getCommonResponse(request);//是否发送成功System.out.println(response.getData());} catch (ServerException e) {e.printStackTrace();} catch (ClientException e) {e.printStackTrace();}}

测试成功

4、编写可复用代码

编写配置文件

使用redis

#redis地址
spring.redis.host=「你的redis主机地址」

编写service接口

public interface SendSms {public Boolean send(String phoneNum, String templateCode, Map<String,Object> code);
}

编写servive接口实现类

@Service
public class SendSmsImpl implements SendSms {@Overridepublic Boolean send(String phoneNum, String templateCode, Map<String, Object> code) {//连接阿里云DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou","你的AccessKey ID","你的AccessKey Secret");IAcsClient client = new DefaultAcsClient(profile);//构建请求,默认即可CommonRequest request = new CommonRequest();request.setMethod(MethodType.POST);request.setDomain("dysmsapi.aliyuncs.com");   //不要动request.setVersion("2017-05-25");             //不要动request.setAction("SendSms");//自定义的参数(手机号,验证码,签名,模板)request.putQueryParameter("PhoneNumbers", phoneNum);request.putQueryParameter("SignName", "乐小北");//你的短信服务的「签名」request.putQueryParameter("TemplateCode", templateCode); //你的短息服务中的「模版CODE」request.putQueryParameter("TemplateParam", JSONObject.toJSONString(code));//JSONObject使用前面Maven导入的fastjson依赖try {CommonResponse response = client.getCommonResponse(request);//是否发送成功System.out.println(response.getData());return response.getHttpResponse().isSuccess();} catch (ServerException e) {e.printStackTrace();} catch (ClientException e) {e.printStackTrace();}return false;}
}

编写controller

@RestController
@CrossOrigin // 微服务跨域支持
public class SmsApiController {@Autowiredprivate SendSms sendSms;@Autowiredprivate RedisTemplate<String, String> redisTemplate;@GetMapping("/send/{phone}")public String code(@PathVariable("phone") String phone) {//调用发送方法(模拟真实业务 redis)String code = redisTemplate.opsForValue().get(phone);//如果验证码存在if (!StringUtils.isEmpty(code)) {return phone + ":" + code + "已存在,未过期";}//若验证码不存在,生成验证码并存储到redis中//使用UUID生成六位验证码code = UUID.randomUUID().toString().substring(0,6);HashMap<String, Object> param = new HashMap<>();param.put("code", code);//调用发送接口Boolean isSend = sendSms.send(phone, "SMS_189830844", param);//发送成功if (isSend) {//手机号、验证码保存在redis5分钟redisTemplate.opsForValue().set(phone, code, 5, TimeUnit.MINUTES);return phone + ":" + code + "发送成功";} else {return "发送失败";}}
}

发送成功

未过期则不发送

手机显示

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/47208.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

短信验证码登录流程思路及详细步骤

点击蓝色“java大数据修炼之道”关注我哟加个“星标”&#xff0c;每晚21:00&#xff0c;一起学技术来源: blog.csdn.net/classabcd/article/details/82464582 作者: classabcd Part1业务流程 构造手机验证码&#xff1a;使用random对象生成要求的随机数作为验证码&#xff0c;…

2023首届盘古石杯晋级赛复盘

晋级赛通排61&#xff0c;学生组39&#xff0c;折在大小写格式上的题太多了qaq 容器密码&#xff1a;usy1UN2Mmgram&^d?0E5r9myrk!cmJGr Android程序分析 1.涉案应用刷刷樂的签名序列号是(答案格式&#xff1a;123ca12a)(★☆☆☆☆) 11fcf899 雷电APP跑的时候前面加…

基于国央企的企业关系大数据洞察分析

国资大数据智能洞察分析系统是利用新兴互联技术、大数据、人工智能与云计算&#xff0c;实现数据挖掘、数据分析与数据展现&#xff0c;以新的表达形式调整或重塑业务模式、流程&#xff0c;以实现数据价值与市场增长。 一、建设国资大数据智能洞察系统的背景 &#xff08;一&…

科大讯飞星火大模型评测:从职场到日常生活,样样精通

文 | 大力财经 今年最热门的话题当属OpenAI发布ChatGPT 3.5版本&#xff0c;全球用户对此纷纷追捧。在国内领域&#xff0c;百度、阿里巴巴、字节跳动、360、腾讯和科大讯飞等厂商纷纷推出大型模型&#xff0c;加入“百模大战”的竞赛。 大模型在自然语言处理领域可以显著提高…

测试 GPT3.5 与 GPT4:哪个模型写的代码更优?

【CSDN 编者按】与 GPT3.5&#xff08;旧的 chatGPT &#xff09;相比&#xff0c;GPT4 在代码生成方面有了很大的进步&#xff0c;但仍存在速度较慢问题。 原文链接&#xff1a;https://wandb.ai/capecape/gpt3vsgpt4/reports/Testing-GTP3-5-vs-GPT4-Which-Model-Writes-Bett…

面试高频关键字

文章目录 前言一、static&#xff1f;1、static修饰全局变量总结&#xff1a; 2、static修饰函数总结&#xff1a; 3、static修饰局部变量总结 二、const&#xff1f;Ⅰ、 const修饰普通变量Ⅱ、 const修饰指针变量Ⅲ、 const修饰函数1、const修饰函数参数2、const 修饰函数返回…

如何通过twitter群推王引流到listing

粉丝经济绝对是亚马逊卖家营销的最佳方式之一。这时卖家要想&#xff0c;我所选产品的目标客户是谁&#xff0c;他们需要什么&#xff1f;这样才能正确分享自己的资源&#xff0c;让粉丝觉得关注你的账号不是浪费时间和精力&#xff0c;而是真正对我有用。 保持在推特上发微博也…

面试直通卡大放送,微软面试官带你揭秘面试潜规则!

最近&#xff0c;很多朋友吐槽工作压力&#xff0c;高薪工作难找&#xff0c;今年中小企业的就业压力比任何一年都大。 7月16日&#xff0c;国家统计局新闻发言人刘爱华在国新办发布会上坦言&#xff0c;2020年上半年城镇新增就业少173万人。 此外&#xff0c;毕业季大学生失业…

网易互联网产品运营管培生面试经历--从群面到终面面试经验分享

一、网申、在线测评 网易刚刚开始2016校招的时候我就去网申了&#xff0c;快9月中旬的时候改了一次志愿顺序。10月8日收到了网易的短信通知&#xff0c;说通过了简历筛选环节&#xff0c;邀请我参加在线测评。 在线测评是一个CBE&#xff08;如果没记错的话&#xff09;的…

独家揭秘:站外引流的十大技巧!

在今天的互联网时代&#xff0c;如何有效地引流已成为网站运营者面临的一个重要问题。 站外引流是指通过在其他网站或平台上建立链接或发布内容&#xff0c;将流量引导到自己的网站&#xff0c;提高自己网站的访问量。 本文将为大家揭秘站外引流的十大技巧&#xff0c;帮助大…

如何高效快速的做私域引流,巨准实操攻略送给你

如今流量越来越贵&#xff0c;获客成本越来越高&#xff0c;现在商家越来越注重私域的精耕&#xff0c;想尽各种办法&#xff0c;把目标客户锁定在自己的微信私域里。 很多人问&#xff1a;那怎样做私域引流&#xff1f;公域为基地扩充私域流量的抓手当今&#xff0c;公、私域…

私域运营4个基本功介绍(引流,内容,工具,方法论)

私域之所以被重视的根本原因是流量模式的改变。品牌也看到了用户的CLV价值&#xff0c;才愿意投入时间和精力去打造属于自己的私域流量“池”。而品牌在搭建属于自己的私域流量“池”时&#xff0c;应该考虑到在私域的“人”。本篇内容作者将为大家说透品牌私域落地的4大基本功…

HTTPS(面试高频必须掌握)

目录 一、HTTPS背景 二、HTTPS 的工作过程 1. 对称加密 2.非对称加密 3. HTTPS 基本工作过程 3.1 使用对称密钥 3.2 引入非对称密钥&#xff08;面试高频问题&#xff09; 3.3 黑客的手段 3.4 引入证书 3.5 捋一捋 3.6 SSL/TLS 三、HTTP 与 HTTPS 区别&#xff08;…

一对一语音视频直播双端原生+php后台源码 社交交友APP匹配语音视频聊天即时通信源码

介绍&#xff1a; 这套是没有教程的哈&#xff0c;你们需要的自己研究。 开发语言 后端web&#xff1a;PHP Android&#xff1a;Java iOS&#xff1a;obje-ct-ctive-C 全新原生一对一社交软件 速度匹配 视频匹配语音匹配 即时通信产品 秒匹配 秒接通 独立资料卡页面 画面以及语…

chatgpt赋能python:Python代码的修改

Python代码的修改 Python是一门广泛应用于Web开发、数据分析、人工智能等领域的编程语言。当你编写Python代码时&#xff0c;你可能需要修改代码以满足不同的需求。但是&#xff0c;如何修改Python代码并确保其正常运行呢&#xff1f;在本文中&#xff0c;我们将介绍一些关于P…

chatgpt赋能python:Python修改List的教程

Python修改List的教程 当涉及到Python编程时&#xff0c;对于处理和管理数据&#xff0c;List是一个非常常见和有用的数据结构。像大多数数据结构一样&#xff0c;有时需要对List进行修改&#xff0c;以便更好地满足程序的需求。因此&#xff0c;本文将向您展示如何使用Python…

来自MIT的论文答辩、PPT教程,教你轻松应对毕业季和学术会议

晓查 发自 凹非寺 量子位 报道 | 公众号 QbitAI 马上就要毕业了&#xff0c;你是不是还在为论文答辩发愁&#xff1f; 又或者你第一次参加学术会议&#xff0c;不知道如何制作论文海报和演讲PPT&#xff1f; 这些与论文主体看似无关的“细枝末节”&#xff0c;往往没有人帮忙&a…

【学术技巧】论文答辩,老师会仔细看论文内容吗?

有同学问&#xff0c;我要参加学位论文答辩&#xff0c;老师会仔细看论文内容吗&#xff1f; 看看大家怎么回答&#xff1f; 高赞回答一 作者&#xff1a;静寂谷链接&#xff1a;https://www.zhihu.com/question/321307733/answer/673243143来源&#xff1a;知乎 一堆人在写答…

chatgpt赋能python:用Python做量化分析:如何利用编程语言赚取利润

用Python做量化分析&#xff1a;如何利用编程语言赚取利润 在金融市场中&#xff0c;量化分析是一种广泛应用的投资策略。该策略基于数学和统计学模型&#xff0c;利用计算机算法来分析和预测金融市场&#xff0c;以获得更好的投资回报。使用python编程语言可以轻松地进行量化…