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

短信验证码实现(阿里云)

如果实现短信验证,上教程,这里用的阿里云短信服务

短信服务 (aliyun.com)

进入短信服务后开通就行,可以体验100条免费,刚好测试用

这里由自定义和专用,测试的话就选择专用吧,自定义要审核,

 SendSms_短信服务_API调试-阿里云OpenAPI开发者门户 (aliyun.com)

这里是方法api,有对应的教程 

验证码模板示例

应用场景模板示例
登录/验证
  • 您的验证码${code},该验证码5分钟内有效,请勿泄漏于他人!
  • 您的验证码:${code},您正进行身份验证,打死不告诉别人!
  • 验证码为:${code},您正在登录,若非本人操作,请勿泄露。
注册
  • 您正在申请手机注册,验证码为:${code},5分钟内有效!
  • 尊敬的用户,您的注册会员动态密码为:${code},请勿泄漏于他人!
  • 您的注册码:${code},如非本人操作,请忽略本短信!
  • 您的校验码:${code},您正在注册成为会员,感谢您的支持!
  • 验证码为:${code},您正在注册成为平台会员,感谢您的支持!
重置密码您的动态码为:${code},您正在进行密码重置操作,如非本人操作,请忽略本短信!
变更信息验证码为:${code},您正在尝试变更重要信息,请妥善保管账户信息。

废话就不说了!

    <!-- 短信依赖 --><dependency><groupId>com.aliyun</groupId><artifactId>dysmsapi20170525</artifactId><version>2.0.24</version></dependency>
package com.xiaoyu;import com.aliyun.dysmsapi20170525.Client;
import com.aliyun.dysmsapi20170525.models.SendSmsRequest;
import com.aliyun.dysmsapi20170525.models.SendSmsResponse;
import com.aliyun.teaopenapi.models.Config;import java.util.Random;
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class SendSms {public static void main(String[] args) throws Exception {String phoneNumber = "你的手机号";if (isValidPhoneNumber(phoneNumber)) {Config config = new Config();config.setType("access_key"); // 使用AK初始化凭据客户端,还有其他的STS Token、AK及RamRoleArn、ECS实例RAM角色、OIDCRoleArn、URI凭据、Bearer Token(目前只有云呼叫中心CCC这款产品支持Bearer Token的凭据初始化方式)config.setAccessKeyId("你的AccessKey ID"); // AccessKey IDconfig.setAccessKeySecret("你的AccessKey Secret"); // AccessKey Secretconfig.endpoint = "dysmsapi.aliyuncs.com";Client client = new Client(config);SendSmsRequest request = new SendSmsRequest();request.setPhoneNumbers(phoneNumber).setSignName("阿里云短信测试")//短信签名.setTemplateCode("SMS_154950909")//短信模板.setTemplateParam("{\"code\":" + generateVerificationCode() + "}");SendSmsResponse response = client.sendSms(request);Integer statusCode = response.getStatusCode();System.out.println("状态码:" + statusCode); //打印状态码,200成功} else {System.out.println("手机号不合法");}}//生成6位数验证码private static String generateVerificationCode() {Random random = new Random();int code = 100000 + random.nextInt(900000); // 生成100000到999999之间的随机数return String.valueOf(code);}//验证手机号private static boolean isValidPhoneNumber(String phoneNumber) {// 定义中国大陆手机号的正则表达式String regex = "^1[3456789]\\d{9}$";// 编译正则表达式Pattern pattern = Pattern.compile(regex);// 创建 Matcher 对象Matcher matcher = pattern.matcher(phoneNumber);// 进行匹配并返回结果return matcher.matches();}
}

#这里强调一下,阿里云这里建议使用STS Token比较安全,我这里使用ak初始化非常不安全,不推荐在项目里面这样写

http://www.lryc.cn/news/226732.html

相关文章:

  • 如何对element弹窗进行二次封装
  • 【微服务专题】手写模拟SpringBoot
  • 七个优秀微服务跟踪工具
  • redis 问题解决 1
  • odoo16前端框架源码阅读——启动、菜单、动作
  • C/C++(a/b)*c的值 2021年6月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析
  • CIFAR-100数据集的加载和预处理教程
  • C#,数值计算——函数计算,Eulsum的计算方法与源程序
  • ChatGLM3 langchain_demo 代码解析
  • asp.net学院网上报销系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio
  • ElasticSearch知识点
  • STM32 GPIO
  • Electron 开发页面应用
  • CSDN写博文的128天
  • Linux学习教程(第二章 Linux系统安装)1
  • vue2手机项目如何使用蓝牙功能
  • 魔兽服务器学习-笔记1
  • 代码随想录day60|84.柱状图中最大的矩形
  • 常见面试题-分布式锁
  • vue开发 安装一些工具
  • Vue.js 组件 - 自定义事件
  • 深度学习 python opencv 火焰检测识别 计算机竞赛
  • PHP中传值与引用的区别
  • Go常见数据结构的实现原理——map
  • 第二十五节——Vuex--历史遗留
  • 大数据Doris(二十一):数据导入演示
  • [100天算法】-面试题 04.01.节点间通路(day 72)
  • linux_day02
  • OpenCV-Python小应用(九):通过灰度直方图检测图像异常点
  • 关于el-table+el-input+el-propover的封装