一、创建阿里云短信权限用户

1、登陆阿里云之后我们点击头像,接着点击AccessKey:

2、选择开始使用子用户 :

3、我们先要创建一个用户组:

4、依次点击新建的用户组——授权管理,给用户组授权,开通短信验证码服务:

5、接着我们新建一个用户(具体用来操作的账号),一定要勾选OpenAPI调用访问,这样我们才能通过代码访问:

记得把AccessKey保存下来,以为后面会看不到:

6、接着将这个用户添加到刚刚的用户组即可:

二、开通阿里云短信服务

1、在搜索框搜索短信服务,点击加载之后,选择免费开通,即可开通短信服务。

2、我们开通短信服务之后,还要设置签名和模板:

签名就相当于公司名称,模板就是短信的模板,验证码短信分为几部分:

默认会给我们设置一个模板,我们可以直接用这个模板(注意:模板一定要和某个签名绑定,否则发送不了验证码):

但是没有默认的签名,我们需要自己添加,申请里有一定要有理有据,比较正当,等待审核通过即可:

可以在快速学习和测试模块,体验一下短信验证码的使用:

这一块也会有实现短信验证码功能的代码:

三、编写测试代码

我们可以在帮助文档中查看具体的使用步骤:帮助文档

1、首先在项目中导入Java SDK的依赖:

<!--阿里云短信验证码sdk--><dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>4.5.16</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.83</version></dependency><!--springboot集成redis--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>

然后编写一个测试类来测试是否能正常发送验证码:

//连接阿里云DefaultProfile profile = DefaultProfile.getProfile("cn-beijing", "Your AccessKey ID", "Your AccessKey Secret");IAcsClient client = new DefaultAcsClient(profile);//构建请求,一般这里不用动CommonRequest request = new CommonRequest();request.setSysMethod(MethodType.POST);request.setSysDomain("dysmsapi.aliyuncs.com");request.setSysVersion("2017-05-25");request.setSysAction("SendSms");//设置发送相关的参数request.putQueryParameter("PhoneNumbers","xxxx"); //手机号request.putQueryParameter("SignName","xxxx"); //申请阿里云 签名名称request.putQueryParameter("TemplateCode","xxxxx"); //申请阿里云 模板codeHashMap<String, Object> map = new HashMap<>();map.put("code", 123456);request.putQueryParameter("TemplateParam", JSONObject.toJSONString(map));//验证码数据,转换json数据传递try{CommonResponse response = client.getCommonResponse(request);System.out.println(response.getData());} catch (ClientException e){e.printStackTrace();}

测试代码写完之后我们就可以执行这段代码进行测试了,结果成功!

四、封装发送短信接口

1、编写Service接口:

public interface SendSms {//手机号、模板代码、验证码public boolean send(String phoneNum, String templateCode, Map<String, Object> code);
}

2、编写接口实现类:

@Service
public class SendSmsImpl implements SendSms {@Overridepublic boolean send(String phoneNum, String templateCode, Map<String, Object> code) {//连接阿里云DefaultProfile profile = DefaultProfile.getProfile("cn-beijing", "LTAI5tMk6A312KwNVnxNuTno", "1MyEwE0uqfHYTFyFAcydutAFBZgGBj");IAcsClient client = new DefaultAcsClient(profile);//构建请求,一般这里不用动CommonRequest request = new CommonRequest();request.setSysMethod(MethodType.POST);request.setSysDomain("dysmsapi.aliyuncs.com");request.setSysVersion("2017-05-25");request.setSysAction("SendSms");//设置发送相关的参数request.putQueryParameter("PhoneNumbers",phoneNum); //手机号request.putQueryParameter("SignName","唐世华个人签名"); //申请阿里云 签名名称request.putQueryParameter("TemplateCode",templateCode); //申请阿里云 模板coderequest.putQueryParameter("TemplateParam", JSONObject.toJSONString(code));//验证码数据,转换json数据传递,这里要用maptry{CommonResponse response = client.getCommonResponse(request);System.out.println(response.getData());return response.getHttpResponse().isSuccess();  //判断发送是否成功} catch (ClientException e){e.printStackTrace();}return false;}
}

3、编写Controller测试类:

@RestController
@CrossOrigin  //跨域支持
public class SendSmsController {@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);System.out.println(code);if(!StringUtils.isEmpty(code)){return phone + ":" + code + "已存在,还没有过期,可继续使用!";}//生成验证码并存储到redis中//生成验证码(包含数字和字母)//code = UUID.randomUUID().toString().substring(0, 4);//生成纯数字int uuid = UUID.randomUUID().toString().replaceAll("-","").hashCode();uuid = uuid < 0 ? -uuid : uuid;//String.hashCode() 值会为空code = String.valueOf(uuid).substring(0, 4);HashMap<String, Object> param = new HashMap<>();param.put("code", code);boolean isSend = sendSms.send(phone, "SMS_274310067", param);  //发送验证码if(isSend){ //发送成功redisTemplate.opsForValue().set(phone, code, 5, TimeUnit.SECONDS);  //将验证码存到redis,设置5分钟过期return phone + ":" + code + "发送成功!";}else {return "发送失败";}}}

完结撒花!!

阿里云短信验证码实战相关推荐

  1. nodejs实现阿里云短信验证码

    nodejs实现阿里云短信验证码 事先准备 1.开通阿里云短信服务 2.获取 AccessKey 代码编写 事先准备 1.开通阿里云短信服务 1⃣️登陆阿里云,然后进入到 https://dysms. ...

  2. 使用阿里云短信验证码API发送短信验证码(配置,获取短信验证码,注册,登录,密码重置)

    获取阿里云短信验证码需要的配置信息. 如果是新用户,可以免费领取3个月,老用户的话就只能购买了,但是也不贵. 申请短信签名 申请短信模板 编写发送短信验证码的工具类 代码中我已经进行了详细的注释,也写 ...

  3. 【阿里云短信验证码】麻瓜教程~~~从注册---申请---代码---执行

    阿里云短信验证码 当然啦,学习任何东西第一步就是去注册当前网站的账号. 阿里云的官网:https://www.aliyun.com/?utm_content=se_1008364713 ◆[1.先注册 ...

  4. springboot 使用shiro集成阿里云短信验证码

    目录 1.阿里云短信验证码服务 2.发送短信验证码 3.shiro配置多个realm 4.验证短信验证码 5.一些修改思路 引言:短信验证码是通过发送验证码到手机的一种有效的验证码系统,主要用于验证用 ...

  5. C# ASP.NET MVC 阿里云短信验证码Demo

    相信大家在开发过程中又很多使用到验证码验证的功能,今天将验证码的验证整理一下写了一个Demo 通过本篇后你能学习到: 阿里云短信服务 Drapper连接SQL Server进行增改操作 JS前端倒计时 ...

  6. [风一样的创作]二次封装阿里云短信 验证码 发送短信 查询短信 编辑短信

    1.首先要注册阿里云,购买阿里云短信服务,拿到AccessKey ID和AccessKey Secret 链接: https://usercenter.console.aliyun.com/#/man ...

  7. Thinkphp3.2开发阿里云短信验证码

    之前一直使用的是创蓝253的短信验证码,开发起来比较方便,不想阿里云这么复杂.有兴趣的同学可以去看一下创蓝253的短信验证码(https://www.253.com). 今天主要说一下阿里云的短信验证 ...

  8. 阿里云短信验证码的坑.....

    阿里云短信的坑 博主在集成阿里云短信的时候发生了此问题: 明明生成6位数字的验证码结果,通过阿里云短信发送出来有时只有5位. 解决办法也很简单我就直接贴代码,说原因了. 原因是: 问题原因:因为我返回 ...

  9. SpringBoot阿里云短信业务实战

    狂神说Java:https://www.bilibili.com/video/BV1c64y1M7qN 阿里云短信服务帮助文档:https://help.aliyun.com/product/4428 ...

最新文章

  1. 仅用 4 小时,吃透“百度太行”背后硬科技!
  2. 4大主流CPU处理器技术架构,不知道就out了!
  3. VIP群第一期讲座实屏片段摘录
  4. 使用STC8G1K08制作调频接收模块TEA5767配置电路
  5. Ansible :一个配置管理和IT自动化工具
  6. java 热替换_class卸载、热替换和Tomcat的热部署的分析
  7. DFT,DTFT,DFS,FFT区别
  8. 我的华为P30pro手机升级了鸿蒙系统!
  9. android下关闭软键盘
  10. 学点数学(4)-协方差矩阵
  11. Unity根据电脑高中低配置加载不同模型
  12. python调用metasploit自动攻击_Python脚本与Metasploit交互进行自动永恒之蓝攻击-Go语言中文社区...
  13. 为什么C++静态static函数不能访问非静态成员
  14. ORACLE 数据库的级联查询 一句sql搞定(部门多级)
  15. EventBus HandlerPoster简单分析
  16. 三星note10 android q,【极光ROM】-【三星NOTE10/NOTE10+/5G N97XX-855 国行/港行/美版】-【V10.0 Android-Q-TK1】...
  17. MSN账号被盗,成功找回记
  18. openstack虚拟机的热迁移和疏散
  19. jqgrid实现表头合并功能
  20. iOS11 API 更新整理

热门文章

  1. ASP isPostBack
  2. 机器人路径规划之分段三次Hermite插值(PCHIP) [包括Python和Matlab代码实现]
  3. StringBoot中String转JSON,JSON转Map或List
  4. ArcGIS 区域统计分析(一)
  5. [Python] OpenCV 摄像头黑边问题
  6. 推荐系统实战 总结一
  7. 蓝松短视频SDK, 更新日志
  8. 计算机基础考试题附答案——《第壹篇》
  9. DirectoryEntry配置IIS出现ADSI Error:未知错误(0x80005000)
  10. Android开发学习(基础)