一、整合微服务

创建service-sms微服务

添加依赖:

        <!--阿里云短信--><dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId></dependency>

配置yml文件:

server:port: 8120 # 服务端口spring:profiles:active: dev # 环境设置application:name: service-sms # 服务名redis:host: localhostport: 6379database: 0timeout: 3000ms #最大等待时间,超时则抛出异常,否则请求一直等待lettuce:pool:max-active: 20  #最大连接数,负值表示没有限制,默认8max-wait: -1    #最大阻塞等待时间,负值表示没限制,默认-1max-idle: 8     #最大空闲连接,默认8min-idle: 0     #最小空闲连接,默认0#阿里云短信
aliyun:sms:region-id: cn-shenzhenkey-id: 你的key-idkey-secret: 你的key-secrettemplate-code: SMS_154950909sign-name: 阿里云短信测试

编写工具类:获取配置文件的内容

@Data
@Component
@ConfigurationProperties(prefix = "aliyun.sms")
public class SmsProperties implements InitializingBean {private String regionId;private String keyId;private String keySecret;private String templateCode;private String signName;public static String REGION_ID;public static String KEY_ID;public static String KEY_SECRET;public static String TEMPLATE_CODE;public static String SIGN_NAME;@Overridepublic void afterPropertiesSet() throws Exception {System.out.println("当读取完所有属性后");System.out.println(regionId);System.out.println(keyId);System.out.println(keySecret);System.out.println(templateCode);System.out.println(signName);System.out.println("将读取到的属性赋值静态属性");KEY_ID = keyId;REGION_ID = regionId;KEY_SECRET = keySecret;TEMPLATE_CODE = templateCode;SIGN_NAME = signName;}
}

service层:

public interface SmsService {void sendCode(String mobile);
}
@Service
public class SmsServiceImpl implements SmsService {@AutowiredRedisTemplate redisTemplate;@Overridepublic void sendCode(String mobile) {// 校验手机号码boolean b = RegexValidateUtils.checkCellphone(mobile);Assert.isTrue(b, ResponseEnum.MOBILE_ERROR);// 生成验证码String fourBitRandom = RandomUtils.getFourBitRandom();// 调用阿里云api// 公共参数DefaultProfile defaultProfile = DefaultProfile.getProfile(SmsProperties.REGION_ID,SmsProperties.KEY_ID,SmsProperties.KEY_SECRET);// 请求客户端IAcsClient iAcsClient = new DefaultAcsClient(defaultProfile);// 请求参数CommonRequest commonRequest = new CommonRequest();commonRequest.setSysMethod(MethodType.POST);commonRequest.setSysDomain("dysmsapi.aliyuncs.com");commonRequest.setSysAction("SendSms");commonRequest.setSysVersion("2017-05-25");commonRequest.putQueryParameter("PhoneNumbers",mobile);//19967505202commonRequest.putQueryParameter("SignName",SmsProperties.SIGN_NAME);commonRequest.putQueryParameter("TemplateCode",SmsProperties.TEMPLATE_CODE);Map<String,String> map = new HashMap<>();map.put("code",fourBitRandom);commonRequest.putQueryParameter("TemplateParam", JSON.toJSONString(map));// 如果是短信验证码,需要加入参数// 发送请求,返回结果CommonResponse commonResponse = null;try {commonResponse = iAcsClient.getCommonResponse(commonRequest);} catch (ClientException e) {e.printStackTrace();}System.out.println(commonResponse);// 发送给redisString data = commonResponse.getData();Gson gson = new Gson();HashMap<String, String> resultMap = gson.fromJson(data, HashMap.class);String commonResponseCode = resultMap.get("Code");Assert.isTrue((null!=commonResponseCode)&&(commonResponseCode.equals("OK")),ResponseEnum.ERROR);redisTemplate.opsForValue().set("srb:sms:code:" + mobile,fourBitRandom);}
}

controller层:

@RestController
@RequestMapping("/api/sms")
@CrossOrigin
public class ApiSmsController {@AutowiredSmsService smsService;@GetMapping("sendCode/{mobile}")public R sendCode(@PathVariable String mobile){smsService.sendCode(mobile);return R.ok();}
}

二、如何实现使用验证码注册的功能,业务流程?

A 注册登录阿里云,申请签名模板,接口授权,整合(短信)

B 新建sms短信微服务(读取公共参数配置文件),导入sdk,实现短信验证码接口

C 短信注册业务流程:

1 前端输入手机号,点击获取验证码

2 短信服务生成验证码,调用阿里云(sms接口服务),发送验证码

3 验证码发送成功后,将验证码存储到服务器缓存(redis)

4 用户输入验证码,点击注册

5 后端用户服务验证验证码,注册用户

尚融宝——阿里云短信验证功能(sms)相关推荐

  1. 阿里云短信验证解决方案(java版)(redis存储)

    阿里云短信验证解决方案(java版)(redis存储) 参考文章: (1)阿里云短信验证解决方案(java版)(redis存储) (2)https://www.cnblogs.com/Amos-Tur ...

  2. springboot整合阿里云短信验证(无需签名和模板,通过阿里云api测试实现短信验证)

    一.开通阿里云短信服务 开通步骤如下图所示 开通完成后,进入阿里云短信验证首页,点击国内消息 一般来说,在短信验证时需要签名管理和模板管理,但是签名管理需要备案或者上线服务,所以对于没有备案和上线应用 ...

  3. 阿里云短信验证服务详细基础教程

    阿里云短信验证服务 1. 注册一个阿里云的帐号 2. 在搜索栏搜索短信服务 3. 点击免费开通 4.开通之后点击管理控制台 5. 获取AccessKey 6. 创建AccessKey并保存,后面会用到 ...

  4. 阿里云短信验证-PHP

    阿里云短信验证-PHP 场景:平台注册,登陆短信验证 参考阿里官方教程 阿里云短信验证-快速入门 前提条件: 产品->云计算产品->短信服务 开通短信服务 创建AccessKey 申请短信 ...

  5. springboot整合阿里云短信验证服务

    导入上面jar包 <dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sd ...

  6. java实现阿里云短信验证注册--详细教程

    java实现阿里云短信验证注册–详细教程 .项目中先引入依赖 <!--阿里云短信包--><dependency><groupId>com.aliyun</gr ...

  7. 尚医通-阿里云短信服务(二十九)

    目录: (1)前台用户系统-手机登录-阿里云短信服务介绍 (2)手机登录-整合短信服务 (3)整合短信发送服务测试 (1)前台用户系统-手机登录-阿里云短信服务介绍 现在使用阿里云完成短信服务:注册登 ...

  8. node开通阿里云短信验证服务,代码演示 超级详细

    阿里云官网步骤:Node.js SDK (aliyun.com) 首先先搭建一个node项目:app.js const express = require('express'); // 引入 Expr ...

  9. 阿里云短信验证(代码)demo完整教程

    前言: 使用阿里云短信服务的前提你得有阿里云账号(我简直在说废话)没有得话就去注册一个 注册后登陆 教程开始: 阿里云上面有官方得文档以及Demo&SDK,为什么我还要写这篇播客呢,因为上面的 ...

最新文章

  1. ubuntu16.04 uninstall cuda 9.0 completely and install 8.0 instead
  2. 用户界面设计的技巧与技术 (作者Scott W.Ambler)
  3. No enclosing instance of type JDStudent is acAcessible. Must qualify the allocation with an enclosin
  4. linux unix shell programming,UnixampLinux Shell Programming I.ppt
  5. Ubuntu 12.04中设置安装Google拼音输入法
  6. java app支付_Java 微信支付之APP支付服务端 (一)
  7. Mac配置环境变量(Java,Android,Gradle,Maven,Hosts)
  8. Python之scrapy实现的爬虫,百度贴吧的自动签到和自动发帖、自动回帖
  9. 针对商品标题冗长问题,阿里工程师怎么解决?
  10. 293、Java中级10 -【多线程】 2020.03.31
  11. Redis 部署方式(单点、master/slaver、sentinel、cluster) 概念与区别
  12. Apache部署超详细教程
  13. cd命令回到上级目录和回到根目录
  14. 如何通过maven官网查询相关依赖的具体代码和版本?
  15. 了解和分析iOS Crash
  16. 气动调节阀故障要怎么处理?
  17. 充电复习之ES 扩展词库及热更新词库,扩展同义词词库,及热扩展词库
  18. 淘宝补单-补单平台-补单平台的实用功能有哪些
  19. 硅谷之所以骨子里与众不同,是因为有这七件事
  20. 第二课 SpringBoot微信点餐系统买家类目设计

热门文章

  1. 用while循环写四叶玫瑰数(自幂数)
  2. 装甲逆袭-NPC移动处理
  3. 找高清图片素材,这8个网站就够了
  4. 【三】仿射变换、投影变换的矩阵形式和特点归纳
  5. 【OSPF-一类router、二类network】(根据lsdb画出拓扑)
  6. 计算机男朋友好处,程序猿男朋友的好处
  7. EasyExcel压缩包导出excel,动态生成多表头或多sheet
  8. 如何认识和投身 Web 3.0?
  9. 支付宝里面基金的猫腻?为什么计算对不上?
  10. 计算机排查方法,电脑主板故障排查方法