尚融宝——阿里云短信验证功能(sms)
一、整合微服务
创建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)相关推荐
- 阿里云短信验证解决方案(java版)(redis存储)
阿里云短信验证解决方案(java版)(redis存储) 参考文章: (1)阿里云短信验证解决方案(java版)(redis存储) (2)https://www.cnblogs.com/Amos-Tur ...
- springboot整合阿里云短信验证(无需签名和模板,通过阿里云api测试实现短信验证)
一.开通阿里云短信服务 开通步骤如下图所示 开通完成后,进入阿里云短信验证首页,点击国内消息 一般来说,在短信验证时需要签名管理和模板管理,但是签名管理需要备案或者上线服务,所以对于没有备案和上线应用 ...
- 阿里云短信验证服务详细基础教程
阿里云短信验证服务 1. 注册一个阿里云的帐号 2. 在搜索栏搜索短信服务 3. 点击免费开通 4.开通之后点击管理控制台 5. 获取AccessKey 6. 创建AccessKey并保存,后面会用到 ...
- 阿里云短信验证-PHP
阿里云短信验证-PHP 场景:平台注册,登陆短信验证 参考阿里官方教程 阿里云短信验证-快速入门 前提条件: 产品->云计算产品->短信服务 开通短信服务 创建AccessKey 申请短信 ...
- springboot整合阿里云短信验证服务
导入上面jar包 <dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sd ...
- java实现阿里云短信验证注册--详细教程
java实现阿里云短信验证注册–详细教程 .项目中先引入依赖 <!--阿里云短信包--><dependency><groupId>com.aliyun</gr ...
- 尚医通-阿里云短信服务(二十九)
目录: (1)前台用户系统-手机登录-阿里云短信服务介绍 (2)手机登录-整合短信服务 (3)整合短信发送服务测试 (1)前台用户系统-手机登录-阿里云短信服务介绍 现在使用阿里云完成短信服务:注册登 ...
- node开通阿里云短信验证服务,代码演示 超级详细
阿里云官网步骤:Node.js SDK (aliyun.com) 首先先搭建一个node项目:app.js const express = require('express'); // 引入 Expr ...
- 阿里云短信验证(代码)demo完整教程
前言: 使用阿里云短信服务的前提你得有阿里云账号(我简直在说废话)没有得话就去注册一个 注册后登陆 教程开始: 阿里云上面有官方得文档以及Demo&SDK,为什么我还要写这篇播客呢,因为上面的 ...
最新文章
- 拜访了这位小哥的GitHub后,我失眠了!
- python有趣的小项目-有趣的python小项目,自动生成有趣的表情包!
- stm32串口学习(一)
- PHP面向对象的进阶学习
- epic怎么添加本地游戏_游戏日报:原神公测无法上架多家安卓渠道;Epic投资布局游戏UGC平台...
- Linux添加网站后无法显示,Linux:SElinux导致网站无法访问
- mysql和hdfs性能对比,Hadoop vs Spark性能对比 -数据库-火龙果软件工程
- js 数字格式化,只能输入正负整数,小数
- 第一节 电 电流 电压 电路 基本电子元件
- 一周搜索热点20170528
- 计算机电脑怎么开热点,笔记本电脑怎么开热点_教你笔记本电脑开热点的方法...
- 搜狐公司副总裁 方刚 先生谈《胜于言传——网站内容制胜宝典》
- pycharm设置控制台的解释器_PyCharm设置
- 周受资将兼任TikTok CEO;默沙东中国总裁罗万里将出任美国总裁 | 高管变动2021年4月26日-5月2日
- 扫地机器人充电红灯闪烁响_智能扫地机器人的充电错误提示与处理
- 2022-2028全球轴承润滑油行业调研及趋势分析报告
- Vue中文字只显示三行,超过部分收起的实现方法
- 重新排序(排序不等式+差分)蓝桥
- decorators.xml的用法 (转)
- BZOJ4411 - [Usaco2016 Feb]Load balancing