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

使用阿里云实现短信注册

当前采用的是阿里云的异步sdk模式

详情见

同步与异步模式

前端传送手机号

调用genparam方法获得生成的四位随机数

        <dependency><groupId>com.aliyun</groupId><artifactId>alibabacloud-dysmsapi20170525</artifactId><version>4.0.3</version></dependency>

/*** 发送短信验证码至指定手机号码。* * @param signName     短信签名名称,用于标识发送方* @param tempalteCode 短信模板ID(阿里云平台配置的模板编码)* @param phoneNum     接收短信的目标手机号码* @param param        短信模板参数(如验证码内容)* * @return 无返回值,发送成功后将验证码缓存至Redis* @throws 无显式抛出异常,但可能在内部处理异常并打印堆栈跟踪*/
private void sendMessage(String signName,String tempalteCode,String phoneNum,String param) {/** 初始化阿里云短信服务凭证提供者,用于身份验证* 使用配置的accessKeyId和accessKeySecret创建静态凭证*/StaticCredentialProvider provider = StaticCredentialProvider.create(Credential.builder().accessKeyId(accessKeyId).accessKeySecret(accessKeySecret).build());/** 创建异步短信客户端,配置区域为青岛,设置凭证提供者* 并覆盖端点为阿里云短信服务指定域名*/AsyncClient client = AsyncClient.builder().region("cn-qingdao").credentialsProvider(provider).overrideConfiguration(ClientOverrideConfiguration.create().setEndpointOverride("dysmsapi.aliyuncs.com")).build();/** 构建发送短信请求,设置接收号码、签名名称、模板代码* 及模板参数(JSON格式字符串),参数格式示例:{"code":"123456"}*/SendSmsRequest sendSmsRequest = SendSmsRequest.builder().phoneNumbers(phoneNum).signName(signName).templateCode(tempalteCode).templateParam("{\"code\":\""+param+"\"}").build();/** 发送短信请求并等待响应,若发送成功且返回码为"OK"* 则将验证码缓存至Redis,设置过期时间*/CompletableFuture<SendSmsResponse> response = client.sendSms(sendSmsRequest);try {SendSmsResponse resp = response.get();System.out.println(new Gson().toJson(resp));if (resp.getBody().getCode().equals("OK")){redisCache.setCacheObject(phoneNum,param,Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES);}}catch (Exception e){e.printStackTrace();}
}

http://www.dtcms.com/a/349970.html

相关文章:

  • 通过URI Scheme实现从Web网页上打开本地C++应用程序(以腾讯会议为例,附完整实现源码)
  • 从 “能对话” 到 “会思考”:通用人工智能离我们还有多远?
  • 【LeetCode 热题 100】416. 分割等和子集——(解法一)记忆化搜索
  • 函数指针与回调函数(c++)
  • 厚铜pcb的工艺流程与制造工艺
  • AI创业公司:Freya 金融语音AI Agent
  • 猴车安全新保障:AI摄像机智能监测人员乘坐合规性
  • 算法 --- 双指针
  • 日语学习-日语知识点小记-构建基础-JLPT-N3阶段(19):文法复习+单词第7回1
  • 【C++高并发内存池篇】ThreadCache 极速引擎:C++ 高并发内存池的纳秒级无锁革命!
  • 【51单片机固定按键占空比】2022-11-12
  • 曲面法向量的数学推导与 SymPy 实现
  • 基于MATLAB长时间序列遥感数据处理及在全球变化、物候提取、植被变绿与固碳分析;长时序NDVI/LAI/GPP产品预处理
  • 音视频学习(五十七):RTSP信令交互流程
  • 1424. 对角线遍历 II
  • “Datawhale AI夏令营--coze空间
  • Java多线程常见误区与最佳实践总结
  • Spring拦截器中@Resource注入为null的问题
  • Github热门开源项目榜单 - 2025年07月
  • 【c++】leetcode300 最长递增子序列
  • 二、添加3D形状
  • Springboot应用如何与SkyWalking集成,并使用Docker进行发布
  • 深入理解Linux进程程序替换:从原理到实践
  • Elasticsearch JVM调优:核心参数与关键技巧
  • Git克隆时遇到“Filename too long“错误的完美解决方案
  • 代理设计模式
  • 俄罗斯情报机构推出新型安卓恶意软件,伪装成杀毒软件
  • SciPy科学计算与应用:SciPy入门与应用-科学计算与NumPy协同实践
  • 工业异常检测大模型(1)数据集、方法
  • 【git使用场景】本地仓库与远程仓库存在独立历史