目录

手机号——一键注册登录流程

构建流程图

用户登录流程

手机号一键注册登录流程图

腾讯云短信

SpringBoot集成腾讯云短信

完善发送短信接口


手机号——一键注册登录流程

构建流程图

用户登录流程

前后端都需要加上60s限制,因为有些用户可能会跳过前端,直接请求我们的后端。

手机号一键注册登录流程图

传入的参数对应的就是我们的输入域。

腾讯云短信

我们这里是需要有自己的一个公众号的。

SpringBoot集成腾讯云短信

我们首先要集成sdk,sdk是一个我们发送短信的jar包的依赖:

版本号这里是第三方的云厂商依赖,是锁死的,我们不会去做维护也不会去管理。

接着要去配置密钥:

创建对应的一个映射类,来获取对应的值:

package com.imooc.utils;import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;@Component
@Data
@PropertySource("classpath:tencentcloud.properties")
@ConfigurationProperties(prefix = "tencent.cloud")
public class TencentCloudProperties {private String secretId;private String secretKey;
}

@PropertySource("classpath:tencentcloud.properties")这里是指资源文件映射的内容,目录:

发送短信的代码:

package com.imooc.utils;import com.tencentcloudapi.common.Credential;
import com.tencentcloudapi.common.exception.TencentCloudSDKException;
import com.tencentcloudapi.common.profile.ClientProfile;
import com.tencentcloudapi.common.profile.HttpProfile;
import com.tencentcloudapi.sms.v20210111.SmsClient;
import com.tencentcloudapi.sms.v20210111.models.SendSmsRequest;
import com.tencentcloudapi.sms.v20210111.models.SendSmsResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;@Component
public class SMSUtils {@Autowiredprivate TencentCloudProperties tencentCloudProperties;public void sendSMS(String phone, String code) throws Exception {try {/* 必要步骤:* 实例化一个认证对象,入参需要传入腾讯云账户密钥对secretId,secretKey。* 这里采用的是从环境变量读取的方式,需要在环境变量中先设置这两个值。* 你也可以直接在代码中写死密钥对,但是小心不要将代码复制、上传或者分享给他人,* 以免泄露密钥对危及你的财产安全。* CAM密匙查询获取: https://console.cloud.tencent.com/cam/capi*/Credential cred = new Credential(tencentCloudProperties.getSecretId(),tencentCloudProperties.getSecretKey());// 实例化一个http选项,可选的,没有特殊需求可以跳过HttpProfile httpProfile = new HttpProfile();//            httpProfile.setReqMethod("POST"); // 默认使用POST/* SDK会自动指定域名。通常是不需要特地指定域名的,但是如果你访问的是金融区的服务* 则必须手动指定域名,例如sms的上海金融区域名: sms.ap-shanghai-fsi.tencentcloudapi.com */httpProfile.setEndpoint("sms.tencentcloudapi.com");// 实例化一个client选项ClientProfile clientProfile = new ClientProfile();clientProfile.setHttpProfile(httpProfile);// 实例化要请求产品的client对象,clientProfile是可选的SmsClient client = new SmsClient(cred, "ap-nanjing", clientProfile);// 实例化一个请求对象,每个接口都会对应一个request对象SendSmsRequest req = new SendSmsRequest();String[] phoneNumberSet1 = {"+86" + phone};//电话号码req.setPhoneNumberSet(phoneNumberSet1);req.setSmsSdkAppId("      ");   // 短信应用ID: 短信SdkAppId在 [短信控制台] 添加应用后生成的实际SdkAppIdreq.setSignName("      ");         // 签名req.setTemplateId("     ");       // 模板id:必须填写已审核通过的模板 ID。模板ID可登录 [短信控制台] 查看/* 模板参数(自定义占位变量): 若无模板参数,则设置为空 */String[] templateParamSet1 = {code};req.setTemplateParamSet(templateParamSet1);// 返回的resp是一个SendSmsResponse的实例,与请求对象对应SendSmsResponse resp = client.SendSms(req);// 输出json格式的字符串回包
//            System.out.println(SendSmsResponse.toJsonString(resp));} catch (TencentCloudSDKException e) {System.out.println(e.toString());}}//    public static void main(String[] args) {
//        try {
//            new SMSUtils().sendSMS("18812345612", "7896");
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//    }
}

其中短信应用id,签名,模板id都需要根据自己的填写。

最后可以做一个测试:

运行会报错,因为所处的是一个springboot环境。

我们在HelloController中测试:

在接口文档中进行调试:

这里已经可以成功的进行短信发送了。

完善发送短信接口

接下来我们要整合我们的前端,在前端输入手机号,获得我们的验证码:

首先创建一个PassportController通行证Controller:

注:我们这里的路由地址要与前端匹配,并且要看清楚用的什么方法

为了获得用户ip,我们要在添加一个获得ip的工具类,

package com.imooc.controller;import com.imooc.grace.result.GraceJSONResult;
import com.imooc.model.Stu;
import com.imooc.utils.IPUtil;
import com.imooc.utils.SMSUtils;
import com.tencentcloudapi.ie.v20200304.models.MuxInfo;
import io.netty.util.internal.StringUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;import javax.servlet.http.HttpServletRequest;@Slf4j
@Api(tags = "PassportController 通行证接口模块")
@RequestMapping("passport")
@RestController
public class PassportController {@Autowiredprivate SMSUtils smsUtils;@PostMapping("getSMSCode")public Object getSMSCode(@RequestParam String mobile,HttpServletRequest request) throws Exception {
//        判断是否为空,为空什么信息都不返回if(StringUtils.isBlank(mobile)){return GraceJSONResult.ok();}
////TODO 获取用户idString userIp = IPUtil.getRequestIp(request);//TODO 根据用户ip进行限制,限制用户在60s之内只能获得一次验证码//        获取6位随机验证码String code = (int)((Math.random()*9+1)*100000)+"";smsUtils.sendSMS(mobile,code);log.info(code);//TODO 把验证码放入redis中,用于后续验证return GraceJSONResult.ok();}}

检查前后端端口是否一致,接着重新启动,在我们的基座中去获取短信:

在我们的控制台中会打印出来一条短信:

这里就完成了我们的集成。

从零开始搭建仿抖音短视频APP--开发用户业务模块(1)相关推荐

  1. 从零开始搭建仿抖音短视频APP-开发用户业务模块(3)

    项目持续更新中: 仿抖音短视频APP专栏 目录 注册登录-BO接受前端参数验证 对BO校验进行统一封装 开发用户是否存在 开发创建用户Service 实现短信注册登录与分布式会话 注册登录-BO接受前 ...

  2. 从零开始搭建仿抖音短视频APP-开发用户业务模块(2)

    项目持续创作中: 仿抖音短视频APP项目专栏 目录 安装redis6.0缓存中间件 整合Redis并存储验证码 拦截器限制60s短信发送 优雅异常封装返回拦截器异常 安装redis6.0缓存中间件 需 ...

  3. 从零开始搭建仿抖音短视频APP--开发用户业务模块(4)

    项目持续更新中: 仿抖音短视频APP专栏 目录 用户退出登录 开发查询用户信息接口 统一封装修改用户信息(一) 统一封装修改用户信息(二) 用户退出登录 此时还没有实现退出登录. 在前端中,我们找到l ...

  4. 从零开始搭建仿抖音短视频APP-后端消息业务模块开发(2)-基础版完结篇

    项目持续更新中: 仿抖音短视频APP专栏 目录 系统消息入库保存 MongoDB分页查询系统消息列表 删除系统消息 系统消息入库保存 这里还剩下最后一个点赞评论没有完成 这里如果点赞了你的评论,你们视 ...

  5. 从零开始搭建仿抖音短视频APP-构建后端项目

    项目持续创作中... ​​​​​​仿抖音短视频APP项目专栏 目录 聚合工程 构建父工程 构建子工程 构建接口工程并且暴露api接口 优雅Restful相应封装 Lombok与多环境profile 数 ...

  6. 从零开始搭建仿抖音短视频APP-后端开发消息业务模块(1)

    项目持续更新中: 仿抖音短视频APP专栏 目录 保存系统消息到MongoDB 系统消息入库保存-关注 系统消息入库保存-点赞短视频 系统消息入库保存-评论与回复 保存系统消息到MongoDB 我们把m ...

  7. 从零开始搭建仿抖音短视频APP-后端开发短视频业务模块(2)

    项目持续更新中: 仿抖音短视频APP 目录 实现数据层mybatis自定义mapper与sql 查询短视频列表api 实现下拉刷新和分页功能 实现数据层mybatis自定义mapper与sql 在数据 ...

  8. 从零开始搭建仿抖音短视频APP-后端开发短视频业务模块(3)

    项目持续更新中: 仿抖音短视频APP专栏 目录 视频详情页展示的数据层实现 视频详情页展示的api实现 短视频下载.复制连接.二维码展示 视频保存到相册 复制链接 二维码展示 实现转为私密或公开视频 ...

  9. 从零开始搭建仿抖音短视频APP--后端开发粉丝业务模块(3)

    项目持续创作中: 仿抖音短视频APP专栏 目录 实现用户点赞视频 用户取消点赞 用户是否点赞视频的判断 实现用户点赞视频 用户在点赞我们的视频后,我们需要去实现一些相关的业务, 这里需要对应到数据库的 ...

最新文章

  1. software reporter tool占用高_广安市园林车载高射程雾炮机厂家供货
  2. RBF(Radial Basis Function Network)+径向基网络
  3. ModuleNotFoundError: No module named 'sklearn.cross_validation'
  4. [转]获取xml节点值和属性值(兼容ie和firefox)
  5. Android获取当前位置,推荐使用百度地图SDK获取位置
  6. mysql 多项式_mysql主从复制原理及实现
  7. C 温故知新 之 指针:函数指针变量、指针型函数
  8. Java基础--说集合框架
  9. 数据库实例: STOREBOOK 用户
  10. (cocos2dx-3.3)3D坐标系
  11. Js设置Cookie
  12. 手机html设计规范,终于晓得手机网站设计尺寸规范
  13. Linux裸机开发|LCD背光调节实验
  14. 深度学习-8.实践方法论
  15. 期货股票自动交易下单接口怎么执行策略函数?
  16. Top 7大开源数据可视化分析工具!
  17. 查看ssh和防火墙的状态 开启ssh服务 关闭防火墙
  18. 2022年,元宇宙是否能结束争议?
  19. 音响系统相关技术术语解释大全
  20. ios 安卓 java_java转android或ios?

热门文章

  1. springboot中static下的图片404
  2. 电脑程序是如何运行起来的
  3. 深入浅出剖析JAVA多线程原理
  4. 【解释比较形象好理解】你稀里糊涂学的算法复杂度,原来这么简单!
  5. 3DLC系列:A/B 网格应用实践
  6. Hadoop性能测试工具
  7. Hadoop性能调优总结
  8. Windows电脑内存不足解决问题
  9. mysql emoy表情_“笑哭”emoji表情过时了,一波“捂脸”大军正在路上
  10. 只做了delete操作,为啥 ORACLE-01466表定义已更改