阿里云手机验证码注册(可以使用阿里云提供的测试模板,不用个人申请)

article/2025/9/27 4:13:45

目录

    • 打开阿里云:(绑定手机号码),不用申请模板和签名
    • 手机验证码注册流程:
    • 实现流程
      • 创建springboot工程,添加依赖
      • 编写applicatioin配置文件
      • 编写controller,根据手机号发送短信
      • 编写service:
      • 测试:

打开阿里云:(绑定手机号码),不用申请模板和签名

在这里插入图片描述

手机验证码注册流程:

1.客户端输入手机号码,服务端接收手机号码(加上手机号是否已经注册的判断),并生成四位数的验证码。
2.将手机号和生成的验证码传到阿里云短信验证服务端
3.根据阿里云服务端的返回类型判断是否发送成功
4.发送成功,就将手机号作为key,验证码作为value存入redis中(可以设置有效时间);发送失败就返回验证码发送失败提示。
5.客户端收到验证码后,输入验证码后,提交
6.服务端获取验证码和手机号,与redis中存入的手机号和验证码进行比对,对比成功,将用户信息添加到数据库,返回注册成功(也可以直接返回token,跳转登录首页),否则返回注册失败。

实现流程

创建springboot工程,添加依赖

pom.xml:

<dependencies><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId></dependency><dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId></dependency></dependencies>

集成redis查看:https://blog.csdn.net/sjgllllll/article/details/122476431

编写applicatioin配置文件

# 服务端口
server.port=8005
# 服务名
spring.application.name=service-msm# mysql数据库连接
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/guli?serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=123456spring.redis.host=IP地址
spring.redis.port=6379
spring.redis.database= 0
spring.redis.password=密码
spring.redis.timeout=1800000spring.redis.lettuce.pool.max-active=20
spring.redis.lettuce.pool.max-wait=-1
#最大阻塞等待时间(负数表示没限制)
spring.redis.lettuce.pool.max-idle=5
spring.redis.lettuce.pool.min-idle=0
#最小空闲#返回json的全局时间格式
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=GMT+8#mybatis日志
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

编写controller,根据手机号发送短信


import com.atguigu.cmsservice.service.MsmService;
import com.atguigu.cmsservice.utils.RandomUtil;
import com.atguigu.commonutils.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;/*** @description: TODO* @author 孙* @date 2022/3/4 10:32* @version 1.0*/
@RestController
@RequestMapping("/api/msm")
@CrossOrigin//跨域
public class MsmApiController {@Autowiredprivate MsmService msmService;@Autowiredprivate RedisTemplate<String,String> redisTemplate;@GetMapping("/send/{phone}")public R code(@PathVariable String phone){String code=redisTemplate.opsForValue().get(phone);//禁止重复发送if (!StringUtils.isEmpty(code)){return R.ok();}code=RandomUtil.getFourBitRandom();Map<String,Object> param=new HashMap<>();param.put("code",code);//调用service发送短信的方法boolean isSend=msmService.send(param,phone);if (isSend){//发送成功把验证码放到redis里面//设置有效时间redisTemplate.opsForValue().set(phone,code,5, TimeUnit.MINUTES);return R.ok();}else{return R.error().message("短信发送失败");}}
}

编写service:

public interface MsmService {boolean send(Map<String, Object> param, String phone);
}

import com.alibaba.fastjson.JSONObject;
import com.aliyuncs.CommonRequest;
import com.aliyuncs.CommonResponse;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;
import com.atguigu.cmsservice.service.MsmService;
import org.apache.commons.codec.language.bm.Rule;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;import java.util.Map;/*** @description: TODO* @author 孙* @date 2022/3/4 10:36* @version 1.0*/
@Service
public class MsmServiceImpl implements MsmService {@Overridepublic boolean send(Map<String, Object> param, String phone) {//判断手机是否为nullif (StringUtils.isEmpty(phone)){return false;}//第一个参数默认,第二参数accesskeyid  第三个参数 accesskeysecretDefaultProfile profile = DefaultProfile.getProfile("default","xxxxx", "xxxx");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("PhoneNumbers",phone); //手机号request.putQueryParameter("SignName","XXX"); //申请阿里云 签名名称request.putQueryParameter("TemplateCode","XXX"); //申请阿里云 模板coderequest.putQueryParameter("TemplateParam", JSONObject.toJSONString(param)); //验证码数据,转换json数据传递try {//最终发送CommonResponse response = client.getCommonResponse(request);boolean success = response.getHttpResponse().isSuccess();return success;}catch(Exception e) {e.printStackTrace();return false;}}
}

测试:

返回值:

redis保存值:
在这里插入图片描述
整合成功


http://chatgpt.dhexx.cn/article/A8mP1COS.shtml

相关文章

抖音实战~手机号验证码一键注册登录流程(限制手机终端登录)

文章目录 一、手机号验证码二、前端2.1. 点击登陆流程2.2. 点击登录源码 三、后端登录3.1. 登录流程图3.2. 流程简述3.3. 手机号验证码登录流程 一、手机号验证码 二、前端 2.1. 点击登陆流程 1.先校验手机号是否合法&#xff1f;不合法&#xff0c;则提示“请输入正确的手机…

会话——验证码注册与记住密码登录

文章目录 1、需求分析2、用户登录功能2.1、流程分析2.2、代码实现2.3、结果演示 3、登录记住密码功能3.1、流程分析3.2、代码实现3.3、结果演示 4、用户注册功能4.1、流程分析4.2、代码实现4.3、结果演示 5、注册验证码功能5.1、流程分析5.2、代码实现5.3、结果演示 1、需求分析…

关于烧写ESP8285核心板的相关事项

首先需要一个CH340的usb 转ttl 板子 然后连接到8285 脚管对应 TTL ---- 8285 VCC----VCC RXD----TX0 TXD----RX0 GND----GND 在通电之前先要把8285的GND 和io 0 连在ttl 板子的 GND上 烧写软件要设置正确否则无法启动

esp32 esp8285 wf6000OTA升级小记

近期做了3个IOT芯片的OTA升级&#xff0c;记录下&#xff1a; 最开始做完的是ESP32,升级流程也简单&#xff0c;初始烧录到固定区&#xff0c;然后OTA升级就会在user1,user2两个区内来回升&#xff0c;升级的文件是同一个&#xff08;即同一个文件&#xff0c;先升级就是user1…

Ubuntu18.04 上 ESP8285 的 esp-at release_v2.2.0.0 编译环境搭建

1 环境搭建前提 1.1 安装编译 ESP-IDF 需要的软件包&#xff1a; sudo apt-get install git wget flex bison gperf python3 python3-pip python3-setuptools cmake ninja-build ccache libffi-dev libssl-dev dfu-util1.2 安装 Python 3.8 sudo apt-get install python3.8-…

探索ESP8285(3)通过EMQX服务器点亮一个LED灯

CCC_122&#xff1a;博客只用于学习交流&#xff0c;不涉及任何商业用途&#xff0c;如果有错误之处&#xff0c;欢迎指正。 在上一个博客的基础上 探索ESP8285&#xff08;2&#xff09;搭建Windows版MQTT服务器 我们来通过EMQX服务器点亮ESP8285模块上的LED灯。 首先查得E…

乐鑫esp8266学习rtos3.0笔记第10篇:内置仅1M的Esp8285,如何攻破最棘手的OTA问题,大大节省资源成本开发产品;

本系列博客学习由非官方人员 半颗心脏 潜心所力所写&#xff0c;仅仅做个人技术交流分享&#xff0c;不做任何商业用途。如有不对之处&#xff0c;请留言&#xff0c;本人及时更改。 1、 Esp8266之 搭建开发环境&#xff0c;开始一个“hellow world”串口打印。 2、 Esp8266之…

晶科鑫 | 国产26MHz晶振匹配Espressif(乐鑫) ESP8285/ESP8266芯片案例

【应用】国产26MHz频率晶振应用于物联网WIFI物联网模块&#xff08;串口转WiFi模块&#xff09;&#xff0c;Espressif(乐鑫) ESP8285/ESP8266芯片匹配测试OK ESP8285其实是ESP8266的升级版本&#xff0c;两者可以共用同一套SDK&#xff0c;只是ESP8285内部集成了1MB Flash&…

ESP8285烧写问题备忘

1 问题现象 ESP8285 烧写了固件&#xff0c;怎么都跑不起来&#xff0c;串口打印如下信息&#xff1a; ets Jan 8 2013,rst cause:2, boot mode:(3,7)load 0x4010f000, len 1384, room 16 tail 8 chksum 0xef csum 0xef csum err ets_main.c 2 问题原因 上乐鑫官网查了 ESP…

ESP8285 多个bin文件合并烧录

可通过两种方式烧录固件&#xff0c;一种是基于esp-idf开发时&#xff0c;中命令终端执行make flash命令烧录&#xff1b;二是使用ESPFlashDownloadTool工具。 bin文件说明 ESP8285/ESP8266的固件一般包含4个bin文件。 查看各bin文件的路径 以带OTA的固件为例&#xff0c;在…

ESP8285+WS2812+MAX9814制作的音乐律动氛围灯

该项目主要参考了立创EDA开源广场的项目&#xff1a; esp8285芯片ESP-01F模块为主控&#xff0c;MAX9814音频采集模块&#xff0c;WS2812 2020rgb灯珠&#xff0c;Arduino编程环境简单制作一个律动灯条。 因为正在学习硬件PCB&#xff0c;所以只能算是一个仿照。 硬件&#x…

探索ESP8285(2)搭建Windows版MQTT服务器

CCC_122&#xff1a;博客只用于学习交流&#xff0c;不涉及任何商业用途&#xff0c;如果有错误之处&#xff0c;欢迎指正。 MQTT服务器有多个选择&#xff0c;例如EMQX&#xff0c;Mosquitto&#xff0c;Apollo&#xff0c;以下我们选择比较简单的EMQX来搭建MQTT的服务器。 一…

峥果智能连接不到服务器,峥果浴霸 ESP8285版本 固件

ESP ZINGUO 峥果智能浴霸个人固件. 作者声明 注意: 本项目主要目的为作者本人自己学习及使用峥果智能浴霸而开发&#xff0c;本着开源精神及造福网友而开源&#xff0c;仅个人开发&#xff0c;可能无法做到完整的测试&#xff0c;所以不承担他人使用本项目照成的所有后果。 严禁…

ESP8266 简单研究 ESP8285 研究

网址&#xff1a; http://wiki.ai-thinker.com/esp8266 ESP8266 系列模组专题 概述 ESP8266 系列模组是深圳市安信可科技有限公司开发的一系列基于乐鑫ESP8266的超低功耗的UART-WiFi模块的模组&#xff0c;可以方便地进行二次开发&#xff0c;接入云端服务&#xff0c;实现…

基于RK3399ESP8285自动售货柜项目—MP08开发板端代码详解

基于RK3399&ESP8285自动售货柜项目—②MP08开发板端代码详解 本系列文章将详细讲解该基于RK3399及ESP8285自动售货柜的完整实现方法&#xff0c;从硬件连接到网络通信再到软件实现&#xff0c;本产品所用开发板为RK3399以及MP08_2019/11/03 , 如有疑问与见解&#xff0c;可…

ESP8285 ESP-AT编译流程和操作步骤

ESP8282ESP-AT编译流程和操作步骤 ESP8285 相当于ESP8266EX 1M SPI Flash ,他的编译工具和ESP-AT 都是跟ESP8266EX 一样的. 他的AT指令不能做OTA分区. 由于flash空间原因. 个人理解 配置好 esp8285 的编译工具链 setup-toolchain export PATH"$PATH:$HOME/xtensa-lx1…

Sipeed M1W内部esp8285固件烧录教程

Sipeed 的K210是真的香啊&#xff0c;但是内部的这个esp8285是做的真的不咋地。买回来之后这个8285折腾死我了&#xff0c;好几次固件出问题&#xff0c;掉固件&#xff0c;问了客户姐姐和群主“泽畔”大佬才解决&#xff0c;所以总结下。 下载固件&#xff1a; 首先我们需要先…

ESP8266与ESP8285开发时有什么区别

ESP8266与ESP8285开发时有什么区别 ESP8266与ESP8285开发时有什么区别烧录环节的改变编译前Makefile文件的更改 ESP8266与ESP8285开发时有什么区别 ESP8266模块在WiFi联网领域已经被广泛使用&#xff0c;但是ESP8266芯片是需要外挂Flash芯片的&#xff0c;这样就使模块不能做的…

ESP8285 sdkconfig

ESP8285与ESP8266使用同一套SDK&#xff0c;ESP8285内部集成了1MB或2MB的SPI FLASH&#xff0c;DOUT模式&#xff0c;所以编译和下载时需要将SPI MODE设置为DOUT模式&#xff0c;编译代码之前先执行make menuconfig ->Serial flasher config->Flash SPI mode->DOUT&am…

探索ESP8285(1)搭建arduino开发ESP8285环境搭建

CCC_122&#xff1a;博客只用于学习交流&#xff0c;不涉及任何商业用途&#xff0c;如果有错误之处&#xff0c;欢迎指正。 前言&#xff1a;ESP8285其实是ESP8266的升级版本&#xff0c;两者可以共用同一套SDK&#xff0c;只是ESP8285内部集成了1MB Flash&#xff0c;SPI Mod…