当前位置: 首页 > news >正文

短信验证码实现

一、设置AccessKey

        创建用户并配置使用权限,使我们拥有调用 aliyunAPI 的权限,之后会生成 AccessKeyID 和 AccessKey密码,后面我们会使用到。需要注意的是 AccessKeyID 和 AccessKey密码生成后我们需要将他保存起来,否则后期无法查询到。

二、开启阿里云短信服务

        在阿里云官网搜索短信服务,进入短信服务控制台。

1、资质管理

        在这里我们申请个人资质即可,就不用上传企业的证明材料。注意个人的证件照片要清除,不能有遮挡,备注信息写上申请说明,不能随便写,审核一般在两个小时内。

2、签名管理

        申请签名。

3、模板管理

        这里的模板,就是我们发送短信的模板,需要注意的是,要注意选择纯数字,或者则是英文数字混合使用的模板。模板CODE后面我们需要使用。

三、SpringBoot整合阿里云SMS

1、整体流程

        1、前端发送短信验证码的请求;

        2、后端收到请求后,生成验证码的code,调用阿里云API 接口发送短信;

        3、判断 SMS API 的返回信息,“OK”则为成功发布;

        4、发布成功将code存入redis,供后期校验使用;

        5、将存入redis时的key值返回给前端。

2、引入依赖

        <dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>4.6.0</version></dependency><dependency><groupId>com.aliyun</groupId><artifactId>dysmsapi20170525</artifactId><version>3.0.0</version></dependency><dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-dysmsapi</artifactId><version>1.1.0</version></dependency>

3、配置SMS Client

@Configuration
public class AliyunCheckCodeConfig {@Beanpublic Client aliyunClient() throws Exception {Config config = new Config().setAccessKeyId("你的AccessKeyID").setAccessKeySecret("你的AccessKey密码");config.endpoint = "dysmsapi.aliyuncs.com";return new Client(config);}
}

        在配置类中将阿里云SMS 的客户端注册进ioc 容器,交给SpringBoot管理,这里需要将自己生成的AccessKeyID 和 AccessKey 密码替换上

4、业务代码

    @Autowiredprivate Client aliyunClient;    /*** 发送短信验证码** @param phone* @return*/@Overridepublic String sendPhoneCheckCode(String phone) {//避免重复提交String jsonString = redisTemplate.opsForValue().get("phone:" + phone);if(jsonString != null){return null;}//生成验证码Integer numCode = new Random().nextInt(1000,9999);String code = String.valueOf(numCode);SendSmsRequest sendSmsRequest = new SendSmsRequest();sendSmsRequest.setSignName("发送短信的主题").setTemplateCode("你的模板CODE").setPhoneNumbers("发送到的手机号").setTemplateParam("{\"code\":" + code + "}");try {RuntimeOptions runtimeOptions = new RuntimeOptions();SendSmsResponse sendSmsResponse = aliyunClient.sendSmsWithOptions(sendSmsRequest, runtimeOptions);SendSmsResponseBody body = sendSmsResponse.getBody();if (body.getMessage().equals("OK")) {//存入redisString key = "phone:" + phone;//存入redisredisTemplate.opsForValue().set(key,code,3,TimeUnit.MINUTES);//返回keyreturn key;} else {return null;}} catch (Exception e) {throw new RuntimeException(e);}}

        这里我们需要将之前申请的模板CODE替换上,code即为替换模板中占位符的信息,我们引入了redis缓存,将生成的验证码存入缓存中,供后面的校验提供支持。

相关文章:

短信验证码实现

一、设置AccessKey 创建用户并配置使用权限&#xff0c;使我们拥有调用 aliyunAPI 的权限&#xff0c;之后会生成 AccessKeyID 和 AccessKey密码&#xff0c;后面我们会使用到。需要注意的是 AccessKeyID 和 AccessKey密码生成后我们需要将他保存起来&#xff0c;否则后期无法查…...

pnpm的坑

请问pnpm的两个坑怎么解决&#xff1a; 第一个坑&#xff1a;没有节省磁盘空间 我已经配置了依赖的存储位置&#xff0c; 但我在项目里pnpm install以后&#xff0c;发现依赖包还是很大&#xff0c; 然后发现里面的链接并不是指向先前配置的依赖存储位置&#xff0c;而是指…...

如何监控和分析 PostgreSQL 中的查询执行计划?

文章目录 一、为什么监控和分析查询执行计划很重要二、PostgreSQL 中用于获取查询执行计划的方法三、理解查询执行计划的关键元素四、通过示例分析查询执行计划五、优化查询执行计划的常见策略六、使用工具辅助分析七、结合实际案例的详细分析八、总结 在 PostgreSQL 数据库中&…...

ruoyi-cloud登录接口实现滑块验证码

一、前言 ruoyi项目默认的验证码是这样的 今天来尝试增加滑块验证码&#xff0c;我们用到的是tianai-captcha。 文档地址&#xff1a;http://doc.captcha.tianai.cloud/ 源码地址&#xff1a;https://gitee.com/tianai/tianai-captcha 下面来看具体的步骤。 二、后端 在g…...

三坐标测量机:柔性生产制造中的高精度测量解决方案

柔性生产制造是制造业的核心竞争力之一。它强调生产线的灵活性和适应性&#xff0c;以满足市场对产品多样化和个性化的需求。在当今快速变化的工业环境中&#xff0c;随着消费者对产品个性化和定制化需求的增加&#xff0c;柔性生产制造和三坐标测量机的结合&#xff0c;为智能…...

puppeteer 爬虫初探

1. puppeteer 和 puppeteer-core 安装 puppeteer 会默认下载一个最新版本的 chrome 浏览器&#xff1b; 安装 puppeteer-core &#xff0c;不会安装 chrome, 若要程序打开浏览器运行时&#xff0c;需手动指定电脑系统安装的 chrome 浏览器路径&#xff1b; 2. puppeteer-core …...

Pandas 入门 15 题

Pandas 入门 15 题 1. 相关知识点1.1 修改DataFrame列名1.2 获取行列数1.3 显示前n行1.4 条件数据选取值1.5 创建新列1.6 删去重复的行1.7 删除空值的数据1.9 修改列名1.10 修改数据类型1.11 填充缺失值1.12 数据上下合并1.13 pivot_table透视表的使用1.14 melt透视表的使用1.1…...

使用微信开发者工具连接gitee

编写代码 打开微信开发者工具 编写小程序代码 提交代码 在微信开发者工具提交代码到gitee仓库的步骤&#xff1a; 1.在gitee创建仓库&#xff0c;得到仓库url 2.微信开发者工具设置远程仓库 点击版本管理-->点击设置-->网络和认证-->认证方式选择 使用用户名和…...

论文复现-基于决策树算法构建银行贷款审批预测模型(金融风控场景)

作者Toby&#xff0c;来源公众号&#xff1a;Python风控模型&#xff0c;基于决策树算法构建银行贷款审批预测模型 目录 1.金融风控论文复现 2.项目背景介绍 3.决策树介绍 4.数据集介绍 5.合规风险提醒 6.技术工具 7.实验过程 7.1导入数据 7.2数据预处理 7.3数据可…...

力扣225题解析:使用队列实现栈的三种解法(Java实现)

引言 在算法和数据结构中&#xff0c;如何用队列实现栈是一个常见的面试题和实际应用问题。本文将探讨力扣上的第225题&#xff0c;通过不同的方法来实现这一功能&#xff0c;并分析各种方法的优劣和适用场景。 问题介绍 力扣225题目要求我们使用队列实现栈的下列操作&#…...

网络协议与标准

协议&#xff1a; 语法 &#xff1b;计算机的算法&#xff0c;二进制 语义 &#xff1b;不要有出现歧义的 同步 &#xff1b; 同步还原信息&#xff0c;收发同步 标准&#xff1a; ISO&#xff08;国际标准化组织&#xff09; IEEE(电气和电子工程师学会) 局域网技术 一.协议…...

154. 寻找旋转排序数组中的最小值 II(困难)

154. 寻找旋转排序数组中的最小值 II 1. 题目描述2.详细题解3.代码实现3.1 Python3.2 Java 1. 题目描述 题目中转&#xff1a;154. 寻找旋转排序数组中的最小值 II 2.详细题解 该题是153. 寻找旋转排序数组中的最小值的进阶题&#xff0c;在153. 寻找旋转排序数组中的最小值…...

5、MP4解复用---AAC+H264

MP4 MP4同样是一种容器格式&#xff0c;是由一个一个Box组成&#xff0c;每个Box又分为Header与Data&#xff0c;Data又包含很多子Box&#xff0c;具体的MP4文件结构也看过&#xff0c;内部Box结构比较复杂&#xff0c;一般不写MP4解释器的话&#xff0c;Box结构不用了解太细&a…...

计算样本之间的相似度

文章目录 前言一、距离度量1.1 欧几里得距离&#xff08;Euclidean Distance&#xff09;1.2 曼哈顿距离&#xff08;Manhattan Distance&#xff09;1.3 切比雪夫距离&#xff08;Chebyshev Distance&#xff09;1.4 闵可夫斯基距离&#xff08;Minkowski Distance&#xff09…...

2-5 softmax 回归的简洁实现

我们发现通过深度学习框架的高级API能够使实现线性回归变得更加容易。 同样&#xff0c;通过深度学习框架的高级API也能更方便地实现softmax回归模型。 本节如在上节中一样&#xff0c; 继续使用Fashion-MNIST数据集&#xff0c;并保持批量大小为256。 import torch from torc…...

我 17 岁创业,今年 20 岁,月入 70 万,全靠低代码

想象一下&#xff0c;当你还在高中的课桌前埋头苦读时&#xff0c;有人告诉你三年后你将成为一家年收入超过 100 万美元的科技公司的创始人。 听起来是不是像天方夜谭&#xff1f; 但对于 20 岁的小伙子 Jacob Klug 来说&#xff0c;这就是他的真实人生。 在大多数同龄人还在为…...

【Python】已解决:urllib.error.HTTPError: HTTP Error 403: Forbidden

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决&#xff1a;urllib.error.HTTPError: HTTP Error 403: Forbidden 一、分析问题背景 在使用Python的urllib库中的urlopen或urlretrieve函数下载文件时&#xff0c;有时会遇到…...

昇思12天

FCN图像语义分割 1. 主题和背景 FCN是由UC Berkeley的Jonathan Long等人于2015年提出的&#xff0c;用于实现图像的像素级预测。 2. 语义分割的定义和重要性 语义分割是图像处理和机器视觉中的关键技术&#xff0c;旨在对图像中的每个像素进行分类。它在很多领域有重要应用…...

【postgresql】 基础知识学习

PostgreSQL是一个高度可扩展的开源对象关系型数据库管理系统&#xff08;ORDBMS&#xff09;&#xff0c;它以其强大的功能、灵活性和可靠性而闻名。 官网地址&#xff1a;https://www.postgresql.org/ 中文社区&#xff1a;文档目录/Document Index: 世界上功能最强大的开源…...

按键控制LED流水灯模式定时器时钟

目录 1.定时器 2. STC89C52定时器资源 3.定时器框图 4. 定时器工作模式 5.中断系统 1&#xff09;介绍 2&#xff09;流程图&#xff1a;​编辑 3&#xff09;STC89C52中断资源 4&#xff09;定时器和中断系统 5&#xff09;定时器的相关寄存器 6.按键控制LED流水灯模…...

glm-5-free不输付费版!DMXAPIAI模型聚合平台,如何调用免费大模型API?

中关村论坛发布AutoGLM 沉思智能体&#xff0c;具备深度研究与电脑操作双重能力&#xff0c;GLM-5.1 编程能力与全球顶尖模型 Claude Opus 4.6 差距仅2.6 分&#xff0c;整体呈现技术迭代、商业化与资本市场的全面提速态势。智谱AI正式推出GLM-5-free开源模型&#xff0c;凭借与…...

Arduino_AVRSTL:面向AVR单片机的轻量C++ STL子集

1. Arduino_AVRSTL 库深度解析&#xff1a;面向资源受限 AVR 平台的 C 标准库子集移植1.1 项目定位与工程价值Arduino_AVRSTL 是对原始 ArduinoSTL 库的一次关键性平台适配&#xff0c;其核心目标并非完整复刻 ISO/IEC 14882 标准定义的 STL&#xff08;Standard Template Libr…...

Tach库:嵌入式单通道转速测量轻量实现

1. Tach库概述&#xff1a;单通道编码器转速测量的嵌入式实现方案 Tach库是一个轻量级、高精度的嵌入式转速测量工具&#xff0c;专为单通道数字脉冲信号设计&#xff0c;典型应用场景包括红外对射式槽型光电开关&#xff08;slotted wheel&#xff09;、霍尔效应转速传感器、磁…...

[Android] 故宫陶瓷馆 v2.2.251126

[Android] 故宫陶瓷馆 v2.2.251126 链接&#xff1a;https://pan.xunlei.com/s/VOpHzrBozQgvaUJbdCkB20SMA1?pwdu338# 故宫陶瓷馆是故宫博物院官方出品的APP&#xff0c;以“时间轴”为核心骨架、全新技术手段打造的陶瓷馆&#xff0c;为你将展品带至手中、带至眼前。...

TFLI2C库详解:Benewake TFLuna激光测距传感器的I²C驱动开发指南

1. TFLI2C 库概述&#xff1a;面向 Benewake TFLuna 的专用 IC 驱动框架TFLI2C 是一个专为 Benewake TFLuna 激光测距传感器设计的 Arduino 兼容库&#xff0c;其核心目标是通过标准 IC&#xff08;Inter-Integrated Circuit&#xff09;总线实现对设备的高可靠性、低开销控制与…...

Ansible Playbook实战指南:从基础到高级技巧全解析

1. Ansible Playbook基础入门 第一次接触Ansible Playbook时&#xff0c;我被它简洁的YAML语法和强大的自动化能力惊艳到了。记得当时需要给50台服务器部署Nginx&#xff0c;传统方式要手动操作每台机器&#xff0c;而用Playbook只花了10分钟就搞定了全部部署。这种效率提升让我…...

Oracle数据库进程体系结构概述

Oracle数据库进程体系结构概述 Oracle属于多进程体系架构&#xff0c;它由多个后台进程组成&#xff0c;每个后台进程完成特定的维护任务&#xff0c;进程之间互相协助&#xff0c;最终共同完成数据库所需的维护任务。 本文讲述的内容&#xff1a; 1、进程类型 2、Oracle两种服…...

我发现了一个超级好用快速生成er图的工具

写论文、做毕设、搞数据库设计的小伙伴们&#xff0c;谁还在手动画 ER 图&#xff1f;Visio 太笨重、PowerDesigner 上手难、PPT 画出来不规范&#xff0c;调格式调半天&#xff0c;答辩还被老师说图不标准&#x1f62d; 最近我挖到一个免费、在线、一键生成的神器&#xff0c…...

GESP2025年3月认证C++三级( 第三部分编程题(2、词频统计)

一、&#x1f9d9;‍♂️ 故事背景&#xff1a;单词王国选举大会 在“单词王国”里 &#x1f3f0; 有很多单词来参加“最受欢迎单词”比赛&#xff01; &#x1f449; 比如&#xff1a; Apple banana apple Orange banana apple二、&#x1f3af; 任务 &#x1f449; 找出&…...

DietPi开发者工具链终极指南:Git、VSCodium、PHP Composer一站式配置

DietPi开发者工具链终极指南&#xff1a;Git、VSCodium、PHP Composer一站式配置 【免费下载链接】DietPi Lightweight justice for your single-board computer! 项目地址: https://gitcode.com/gh_mirrors/di/DietPi DietPi作为轻量级的单板计算机系统&#xff0c;为开…...