课程名称:Spring Cloud 进阶 Alibaba 微服务体系自媒体实战
课程章节: 第3章 开发通行证有关服务
主讲老师: 风间影月
课程内容
本课程主要是通过借助阿里云平台,来实现短信发送功能。
内容概述:
短信登录与注册
短信验证码发送与限制
短信注册流程:
用户前端输入手机号。并且对手机号进行格式校验。(格式校验的目的是为了防止重复发送过多短信)
判断60秒内是否发送过短信。
如果发送过,提示用户已经发送过短信,请勿重复点击发送。
如果未发送,则生成对应的短信验证码。
调用阿里云短信服务,实现短信发送功能。
保存验证码,并且限制一定时间失效。
一键登录/注册流程
短信服务
配置密钥与资源
在使用第三方云资源的时候,需要配置秘钥,不论阿里云或者腾讯云,都有这样的操作,具体如下:
resources/aliyun.properties
创建对应的配置类:AliyunResource
@Component @PropertySource("classpath:aliyun.properties") @ConfigurationProperties(prefix = "aliyun") public class AliyunResource { private String accessKeyId; private String accessKeySecret; public String getAccessKeyId() { return accessKeyId; } public void setAccessKeyId(String accessKeyId) { this.accessKeyId = accessKeyId; } public String getAccessKeySecret() { return accessKeySecret; } public void setAccessKeySecret(String accessKeySecret) { this.accessKeySecret = accessKeySecret; } }
在common子工程中引入阿里云短信依赖
<dependencies> <!-- 第三方云厂商相关的依赖 --> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> <version>4.5.0</version> </dependency> </dependencies>
整合并发送短信
阿里云官方提供了短信api,可以直接复制工具类到各自的项目中即可使用。参考如下:
短信工具类:
@Component public class SMSUtils { @Autowired public AliyunResource aliyunResource; public void sendSMS(String mobile, String code) { DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", aliyunResource.getAccessKeyID(), aliyunResource.getAccessKeySecret()); 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("RegionId", "cn-hangzhou"); request.putQueryParameter("PhoneNumbers", mobile); request.putQueryParameter("SignName", "风间影月"); request.putQueryParameter("TemplateCode", "SMS_183761535"); request.putQueryParameter("TemplateParam", "{\"code\":\"" + code + "\"}"); try { CommonResponse response = client.getCommonResponse(request); System.out.println(response.getData()); } catch (ServerException e) { e.printStackTrace(); } catch (ClientException e) { e.printStackTrace(); } } }
课程截屏
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦