SMS - 基于阿里云實現手機短信驗證碼登錄(無需備案,非測試)

目錄

SMS

環境調試

從阿里云云市場中購買第三方短信服務

調試短信驗證碼功能

實戰開發?

封裝組件

對外接口

調用演示


SMS


環境調試

從阿里云云市場中購買第三方短信服務

a)進入阿里云首頁,然后從云市場中找到 “短信”?(一定要從 云市場 去找短信服務,否則需要企業證明,備案)?

?阿里云-計算,為了無法計算的價值阿里云——阿里巴巴集團旗下公司,是全球領先的云計算及人工智能科技公司之一。提供免費試用、云服務器、云數據庫、云安全、云企業應用等云計算服務,以及大數據、人工智能服務、精準定制基于場景的行業解決方案。免費備案,7x24小時售后支持,助企業無憂上云。icon-default.png?t=N7T8https://www.aliyun.com/

b)然后任意挑選一個合適的短信服務(這里以一個為例)

c)點擊購買更多

d)然后按照自己的需求購買(還是有很多可以白嫖的)

這樣就購買成功了.

e)之后你就可以在控制臺里搜索 “云市場”,找到你購買的服務

Ps:將來使用短信服務給手機發送驗證碼時,就需要指定上面個的 AppCode(千萬不可泄漏,防止別人亂刷)

調試短信驗證碼功能

a)進入你購買的服務后,找到 API 接口,點擊 “去調試”

b) 如下界面(用到的參數都可以參照 “商品介紹” 中的描述)

c)調整參數,點擊發送請求,隨后返回響應,顯示 "ok",說明調試成功(此時你就可以看到發送到你手機上的驗證碼了).?

實戰開發?

封裝組件

a)復制請求示例中的所有代碼,粘貼到你的項目中

b)按照注釋中的內容去引入對應的依賴和工具類

c)建議將短信服務專門到一個微服務中(專門用例處理調用第三方服務的接口),將來其他服務需要使用時,進行遠程調用接口,解耦合(不要跟我張口閉口性能優化...).

import org.apache.http.HttpResponse;
import org.cyk.gulimall.third.infra.HttpUtils;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.Map;@Component
public class SmsComponent {/*** 這里的 host、pat、method、appcode 可以配置到配置文件中,但是沒必要* 因為將來如果真要換另一個企業的短信服務,接口的需要的參數變化都還是挺大的,所以基本沒有復用的必要* code: 驗證碼* phone: 手機號*/public void sendMsg(String code, String phone) {String host = "https://dfsns.market.alicloudapi.com";String path = "/data/send_sms";String method = "POST";String appcode = "91dasjhfk75e0574afdajsf82g3r3bf923r";Map<String, String> headers = new HashMap<>();//最后在header中的格式(中間是英文空格)為Authorization:APPCODE 83359fd73fe94948385f570e3c139105headers.put("Authorization", "APPCODE " + appcode);//根據API的要求,定義相對應的Content-Typeheaders.put("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");Map<String, String> querys = new HashMap<>();Map<String, String> bodys = new HashMap<>();bodys.put("content", "code:" + code);bodys.put("template_id", "CST_ptdie100");  //注意,CST_ptdie100該模板ID僅為調試使用,調試結果為"status": "OK" ,即表示接口調用成功,然后聯系客服報備自己的專屬簽名模板ID,以保證短信穩定下發bodys.put("phone_number", phone);try {HttpResponse response = HttpUtils.doPost(host, path, method, headers, querys, bodys);System.out.println(response.toString());} catch (Exception e) {e.printStackTrace();}}}

對外接口

@RestController
@RequestMapping("/auth/sms")
class SmsApi(val thirdSmsRpcService: ThirdSmsRpcService,val redisTemplate: StringRedisTemplate,
) {@GetMapping("/send_code/{phone}")fun sendCode(@PathVariable("phone") phone: String, //此處省略格式校驗): ApiResp<Int> {//1.驗證碼防刷val rCode = redisTemplate.opsForValue().get(SmsRedisKey.getSMSKey(phone))rCode?.let { throw AppException(ApiStatus.CODE_GET_FAST, "驗證碼獲取過于頻繁!") }//2.生成驗證碼//1) 生成 6 位隨機數字val code = (1..6).joinToString("") { Random().nextInt(0, 10).toString() }//2) 保存到 Redis 上redisTemplate.opsForValue().set(SmsRedisKey.getSMSKey(phone), code, 1, TimeUnit.MINUTES)//3.向手機發送驗證碼thirdSmsRpcService.sendMsg(code, phone)return ApiResp.ok(1)}}

Ps:對于驗證碼接口防刷,這里可以根據不同需求,做得很復雜

調用演示

調用后,手就可以收到以下短信.

關于短信的模板,可以去聯系客服進行申請.

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/24514.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/24514.shtml
英文地址,請注明出處:http://en.pswp.cn/web/24514.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何實現網站HTTPS訪問

在當今網絡安全至關重要的時代&#xff0c;HTTPS已經成為網站安全的基本標準。HTTPS&#xff08;超文本傳輸安全協議&#xff09;通過在HTTP協議基礎上加入SSL加密層&#xff0c;確保了數據在用戶瀏覽器和服務器之間的傳輸是加密的&#xff0c;有效防止數據被竊取或篡改&#x…

calico node一直not ready

背景 我司某個大數據集群在做完添加到集群聯邦管理后&#xff0c;該集群的calico-node全部處于not ready 狀態&#xff0c;導致集群中節點之前的跨節點容器網絡不通。 操作 將大數據所在的k8s集群添加到集群聯邦的控制平面后&#xff0c;我們為了做各個子集群之間的容器網絡…

換熱器設計參數的選用

1 換熱管類型 光管&#xff1a;適用于任何條件&#xff1b;應用面廣 螺紋管&#xff1a;殼程流體的膜傳熱系數相當于管程傳熱系數1/3~3/5的場合&#xff1b;強化殼程傳熱系數&#xff0c;提高總傳熱系數&#xff1b;結垢速率低&#xff0c;結垢周期長。 波紋管&#xff1a;管…

使用 PAI-DSW x Free Prompt Editing圖像編輯算法,開發個人AIGC繪圖小助理

教程簡述 在本教程中&#xff0c;您將學習在阿里云交互式建模平臺PAI-DSW x Free Prompt Editing&#xff08;CVPR2024中選論文算法&#xff09;圖像編輯算法&#xff0c;開發個人AIGC繪圖小助理&#xff0c;實現文本驅動的圖像編輯功能單卡即可完成AIGC圖片風格變化、背景變化…

Java 的分支

分支控制有三種&#xff1a;單分支&#xff0c;雙分支&#xff0c;多分支。 單分支 基本語法&#xff1a; if (條件表達式){執行代碼塊; }程序示例&#xff1a; import java.util.Scanner;public class If01 {public static void main(String[] args) {Scanner sc new Sca…

【JAVA WEB實用技巧與優化方案】如何通過javacore、heapdump來排查JVM線程和內存問題

文章目錄 介紹什么是javacore ? javacore可以用來做哪些分析?什么是HeapDump?一、輸出JAVACORE 和 DUMP文件1.輸出JAVACORE通過`kill -3 [pid]` 來輸出javacore通過jstack 輸出Javacore文件2.輸出 dump 文件二、javacore文件和heapdump文件的分析工具使用詳情javacore 工具i…

Cesium開發環境搭建(一)

1.下載安裝Node.js 進入官網地址下載安裝包 Node.js — Download Node.js https://cdn.npmmirror.com/binaries/node/ 選擇對應你系統的Node.js版本&#xff0c;這里我選擇的是Windows系統、64位 安裝完成后&#xff0c;WINR&#xff0c;輸入node --version&#xff0c;顯示…

React + SpringBoot實現圖片預覽和視頻在線播放,其中視頻實現切片保存和分段播放

圖片預覽和視頻在線播放 需求描述 實現播放視頻的需求時&#xff0c;往往是前端直接加載一個mp4文件&#xff0c;這樣做法在遇到視頻文件較大時&#xff0c;容易造成卡頓&#xff0c;不能及時加載出來。我們可以將視頻進行切片&#xff0c;然后分段加載。播放一點加載一點&am…

tcp aimd 窗口的推導

舊事重提&#xff0c;今天用微分方程的數值解觀測 tcp aimd 窗口值。 設系統 AI&#xff0c;MD 參數分別為 a 1&#xff0c;b 0.5&#xff0c;丟包率由 buffer 大小&#xff0c;red 配置以及線路誤碼率共同決定&#xff0c;設為 p&#xff0c;窗口為 W&#xff0c;則有&…

云原生技術助力某國際化商業集團打造數字化轉型新引擎

某國際化商業集團&#xff08;以下簡稱&#xff1a;集團&#xff09;&#xff0c;成立于1988年&#xff0c;現已發展成為擁有總資產800多億元&#xff0c;員工13000多人&#xff0c;涵蓋港口碼頭、石油化工、國際貿易等產業于一體的國際化現代化企業集團&#xff0c;連續多年進…

HAL STM32F1 通過查表方式實現SVPWM驅動無刷電機測試

HAL STM32F1 通過查表方式實現SVPWM驅動無刷電機測試 &#x1f4cd;相關篇《基于開源項目HAL STM32F4 DSP庫跑SVPWM開環速度測試》 ?針對STM32F1系列&#xff0c;沒有專門的可依賴的DSP庫&#xff0c;為了實現特定函數的浮點運算快速計算&#xff0c;通過查表方式來實現&#…

番外篇 | 利用華為2023最新Gold-YOLO中的Gatherand-Distribute對特征融合模塊進行改進

前言:Hello大家好,我是小哥談。論文提出一種改進的信息融合機制Gather-and-Distribute (GD) ,通過全局融合多層特征并將全局信息注入高層,以提高YOLO系列模型的信息融合能力和檢測性能。通過引入MAE-style預訓練方法,進一步提高模型的準確性。?? 目錄 ??1.論文解…

如何解鎖植物大戰僵尸雜交版v2.0.88所有植物

如何解鎖植物大戰僵尸雜交版v2.0.88所有植物 前言安裝相關軟件快速解鎖方法 前言 經過探索植物大戰僵尸雜交版植物解鎖和關卡有關&#xff0c;所以通過所有關卡就可以解鎖所有植物。 安裝相關軟件 1.安裝植物大戰僵尸 2.安裝Hex Editor Neo 快速解鎖方法 本文參考如何修改…

<vs2022><問題記錄>visual studio 2022使用console打印輸出時,輸出窗口不顯示內容

前言 本文為問題記錄。 問題概述 在使用visual studio 2022編寫代碼時&#xff0c;如C#&#xff0c;在代碼中使用console.writeline來打印某些內容&#xff0c;以便于觀察&#xff0c;但發現輸出窗口不顯示&#xff0c;而代碼是完全沒有問題的。 解決辦法 根據網上提供的辦法…

深入解析力扣183題:從不訂購的客戶(LEFT JOIN與子查詢方法詳解)

在本篇文章中&#xff0c;我們將詳細解讀力扣第183題“從不訂購的客戶”。通過學習本篇文章&#xff0c;讀者將掌握如何使用SQL語句來解決這一問題&#xff0c;并了解相關的復雜度分析和模擬面試問答。每種方法都將配以詳細的解釋&#xff0c;以便于理解。 問題描述 力扣第18…

Java Web學習筆記23——Vue項目簡介

Vue項目簡介&#xff1a; Vue項目-創建&#xff1a; 命令行&#xff1a;vue create vue-project01 圖形化界面&#xff1a;vue ui 在命令行中切換到項目文件夾中&#xff0c;然后執行vue ui命令。 只需要路由功能。這個路由功能&#xff0c;開始不是很理解。 創建項目部保存…

html+css示例

HTML HTML&#xff08;超文本標記語言&#xff09;和CSS&#xff08;層疊樣式表&#xff09;是構建和設計網頁的兩種主要技術。HTML用于創建網頁的結構和內容&#xff0c;而CSS用于控制其外觀和布局。 HTML基礎 HTML使用標簽來標記網頁中的不同部分。每個標簽通常有一個開始…

【原創】海為PLC與RS-WS-ETH-6傳感器的MUDBUS_TCP通訊

點擊“藍字”關注我們吧 一、關于RS-WS-ETH-6傳感器的準備工作 要完成MODBUS_TCP通訊,我們必須要知道設備的IP地址如何分配,只有PLC和設備的IP在同一網段上,才能建立通訊。然后還要選擇TCP的工作模式,來建立設備端和PC端的端口號。接下來了解設備的報文格式,方便之后發送…

前端:快捷 復制chrome 控制臺打印出來的 數組對象

程序中console.log出來的對象。按照以下步驟操作 1.右鍵點擊需要處理的對象&#xff0c;會出現Store as global variable&#xff0c;點擊 2.點擊 Store as global variable 控制臺會出現 3.在控制臺 輸入 copy(temp1) 這樣對象就復制到了你的黏貼面板里面 在代碼中直接 c…

基于STM32開發的智能語音控制系統

目錄 引言環境準備智能語音控制系統基礎代碼實現&#xff1a;實現智能語音控制系統 4.1 語音識別模塊數據讀取4.2 設備控制4.3 實時數據監控與處理4.4 用戶界面與反饋顯示應用場景&#xff1a;語音控制的家居設備管理問題解決方案與優化收尾與總結 1. 引言 隨著人工智能技術…