【功能大全】手机短信验证码一键注册登录流程

2024-03-13 08:28

本文主要是介绍【功能大全】手机短信验证码一键注册登录流程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

发送验证码

注册登录

用户表设计

​编辑申请腾讯云短信与密钥

找到云短信服务

开通腾讯云短信服务

​编辑​​​​​创建短信签名

​编辑​编辑创建短信正文模版​编辑​编辑

等待审核

测试短信​编辑

SDK密钥创建

SpringBoot集成腾讯云短信

pom中导入腾讯云短信的sdk坐标:

resource创建资源文件,放入腾讯云短信的信息

构建资源类,和秘钥信息做好映射,方便后续获得

发送短信源码(可在腾讯云官网查询源码)

在controller中测试发送


发送验证码


1.点击按钮(获得验证码)
2.设置:60秒内只能获得一次验证码
3.设置:验证码有效时间(5分钟/15分钟/30分钟)
4.发送验证码到手机

注册登录

1.点击按钮 注册登录
2.判断验证码有效
3.查询判断用户是否存在
    a.不存在,则注册
    b. 存在,则登录
4.删除已使用的短信验证码
5.创建用户令牌并且协同用户信息返回给前端

用户表设计


申请腾讯云短信与密钥

找到云短信服务

  • 注册腾讯云
  • 个人实名认证
  • 进入到控制台,找到短信(或搜索即可或云产品中找到短信)

开通腾讯云短信服务

开通云短信服务,开通短信服务后才能发短信。


​​​​​创建短信签名



创建短信正文模版

等待审核

由于目前腾讯云短信只支持他用(公司),自用还在跟运营商沟通,如果后期运营商还不给予通过,腾讯云会修改该功能

测试短信

SDK密钥创建

在云产品找到访问秘钥



新建秘钥

SpringBoot集成腾讯云短信

pom中导入腾讯云短信的sdk坐标:

<!-- 第三方云厂商相关依赖 --><dependency><groupId>com.tencentcloudapi</groupId><artifactId>tencentcloud-sdk-java</artifactId><!-- go to https://search.maven.org/search?q=tencentcloud-sdk-java and get the latest version. --><!-- 请到https://search.maven.org/search?q=tencentcloud-sdk-java查询所有版本,最新版本如下 --><version>3.1.598</version></dependency

resource创建资源文件,放入腾讯云短信的信息

构建资源类,和秘钥信息做好映射,方便后续获得

@Component
@Data
@PropertySource("classpath:tencentCloud.properties")
@ConfigurationProperties(prefix = "tencent.cloud")
public class TencentCloudProperties {private String SecretId;private String SecretKey;}

发送短信源码(可在腾讯云官网查询源码)


修改后的发送短信源码

@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("1400568450");   // 短信应用ID: 短信SdkAppId在 [短信控制台] 添加应用后生成的实际SdkAppIdreq.setSignName("火热男");         // 签名(创建签名中的签名内容)req.setTemplateId("1108902");       // 模板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();
//        }
//    }
}

在controller中测试发送

@Autowiredprivate SMSUtils smsUtils;@GetMapping("sms")public Object sms() throws Exception {smsUtils.sendSMS(MyInfo.getMobile(), "9875");return "Send SMS OK~~~";}

这篇关于【功能大全】手机短信验证码一键注册登录流程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/804224

相关文章

springboot+redis实现订单过期(超时取消)功能的方法详解

《springboot+redis实现订单过期(超时取消)功能的方法详解》在SpringBoot中使用Redis实现订单过期(超时取消)功能,有多种成熟方案,本文为大家整理了几个详细方法,文中的示例代... 目录一、Redis键过期回调方案(推荐)1. 配置Redis监听器2. 监听键过期事件3. Redi

MySQL游标和触发器的操作流程

《MySQL游标和触发器的操作流程》本文介绍了MySQL中的游标和触发器的使用方法,游标可以对查询结果集进行逐行处理,而触发器则可以在数据表发生更改时自动执行预定义的操作,感兴趣的朋友跟随小编一起看看... 目录游标游标的操作流程1. 定义游标2.打开游标3.利用游标检索数据4.关闭游标例题触发器触发器的基

Qt实现对Word网页的读取功能

《Qt实现对Word网页的读取功能》文章介绍了几种在Qt中实现Word文档(.docx/.doc)读写功能的方法,包括基于QAxObject的COM接口调用、DOCX模板替换及跨平台解决方案,重点讨论... 目录1. 核心实现方式2. 基于QAxObject的COM接口调用(Windows专用)2.1 环境

SpringBoot实现图形验证码的示例代码

《SpringBoot实现图形验证码的示例代码》验证码的实现方式有很多,可以由前端实现,也可以由后端进行实现,也有很多的插件和工具包可以使用,在这里,我们使用Hutool提供的小工具实现,本文介绍Sp... 目录项目创建前端代码实现约定前后端交互接口需求分析接口定义Hutool工具实现服务器端代码引入依赖获

SpringBoot+Vue3整合SSE实现实时消息推送功能

《SpringBoot+Vue3整合SSE实现实时消息推送功能》在日常开发中,我们经常需要实现实时消息推送的功能,这篇文章将基于SpringBoot和Vue3来简单实现一个入门级的例子,下面小编就和大... 目录前言先大概介绍下SSE后端实现(SpringBoot)前端实现(vue3)1. 数据类型定义2.

Spring Boot基于 JWT 优化 Spring Security 无状态登录实战指南

《SpringBoot基于JWT优化SpringSecurity无状态登录实战指南》本文介绍如何使用JWT优化SpringSecurity实现无状态登录,提高接口安全性,并通过实际操作步骤... 目录Spring Boot 实战:基于 JWT 优化 Spring Security 无状态登录一、先搞懂:为什

MySQL基本表查询操作汇总之单表查询+多表操作大全

《MySQL基本表查询操作汇总之单表查询+多表操作大全》本文全面介绍了MySQL单表查询与多表操作的关键技术,包括基本语法、高级查询、表别名使用、多表连接及子查询等,并提供了丰富的实例,感兴趣的朋友跟... 目录一、单表查询整合(一)通用模版展示(二)举例说明(三)注意事项(四)Mapper简单举例简单查询

SpringBoot整合Apache Spark实现一个简单的数据分析功能

《SpringBoot整合ApacheSpark实现一个简单的数据分析功能》ApacheSpark是一个开源的大数据处理框架,它提供了丰富的功能和API,用于分布式数据处理、数据分析和机器学习等任务... 目录第一步、添加android依赖第二步、编写配置类第三步、编写控制类启动项目并测试总结ApacheS

nacos服务无法注册到nacos服务中心问题及解决

《nacos服务无法注册到nacos服务中心问题及解决》本文详细描述了在Linux服务器上使用Tomcat启动Java程序时,服务无法注册到Nacos的排查过程,通过一系列排查步骤,发现问题出在Tom... 目录简介依赖异常情况排查断点调试原因解决NacosRegisterOnWar结果总结简介1、程序在

MySQL 数据库进阶之SQL 数据操作与子查询操作大全

《MySQL数据库进阶之SQL数据操作与子查询操作大全》本文详细介绍了SQL中的子查询、数据添加(INSERT)、数据修改(UPDATE)和数据删除(DELETE、TRUNCATE、DROP)操作... 目录一、子查询:嵌套在查询中的查询1.1 子查询的基本语法1.2 子查询的实战示例二、数据添加:INSE