一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Springboot實現阿里云通信短信服務有關短信驗證碼的發送功能

Springboot實現阿里云通信短信服務有關短信驗證碼的發送功能

2020-12-17 14:29喝酒不騎馬 Java教程

短信驗證碼是通過發送驗證碼到手機的一種有效的驗證碼系統。主要用于驗證用戶手機的合法性及敏感操作的身份驗證。下面通過本文大家分享Springboot實現阿里云通信短信服務有關短信驗證碼的發送功能,一起看看吧

前言

短信驗證碼是通過發送驗證碼到手機的一種有效的驗證碼系統。主要用于驗證用戶手機的合法性及敏感操作的身份驗證。

現在市面上的短信服務平臺有很多。大家在選擇的時候未免會有些不好抉擇。本人建議選擇短信服務商應遵循以下幾點:

  1. 服務商知名度高,業務流量大。(這樣的平臺可信度高)
  2. 服務穩定,不能經常宕機。(保證自身業務的流暢運行)
  3. 文檔全面詳細。(沒文檔怎么玩?)

最近的一個項目中,注冊和修改密碼時需要用到短信驗證碼校驗手機號的功能。本人也是對比幾家后,直接選擇阿里云通信的短信服務。(本身項目服務器也是部署在阿里云上,但之前并不知道阿里云有短信服務,早知道阿里有的話就不會浪費時間找其他平臺了)。廢話不多說,下面直接開始短信驗證服務教程。

準備

1.登錄阿里云,開通阿里云通信短信服務。

2.申請accesskey

選擇右上角accesskeys,創建一個access key

Springboot實現阿里云通信短信服務有關短信驗證碼的發送功能

3.進入控制臺,申請短信簽名。這個作用就是用于短信前面“【】”里面的名稱。輸入時不需要帶“【】”

Springboot實現阿里云通信短信服務有關短信驗證碼的發送功能 

注意申請規范,要不然審核不會過。符合規范的話一般一個小時左右就能通過了。

我這里的簽名是“喝酒不騎馬”

Springboot實現阿里云通信短信服務有關短信驗證碼的發送功能 

4.申請短信模版

模板類型選擇驗證碼。注意,選擇驗證碼后,模板替代變量只支持驗證碼作為變量,且變量替換值<=6位數字或字母。

我的模板如下圖

Springboot實現阿里云通信短信服務有關短信驗證碼的發送功能 

1.下載sdk包

 

下載后,我們需要使用

aliyun-java-sdk-core-3.2.2.jar

aliyun-java-sdk-dysmsapi-1.0.0-sanpshot.jar

aliyun-sdk-mns-1.1.8.jar

這三個包

springboot + maven下的jar包配置

1.在工程的resources目錄下新建一個lib文件夾,將jar包復制進去。

Springboot實現阿里云通信短信服務有關短信驗證碼的發送功能

2.由于maven庫中沒有上述幾個jar包的依賴,所以需要將本地lib目錄下的jar包導入到maven中。并在pom.xml文件中填下如下依賴。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<dependency>
 <groupid>aliyun-message-sdk-core</groupid>
 <artifactid>aliyun-message-sdk-core</artifactid>
 <version>3.2.3</version>
 <scope>system</scope>
 <systempath>${project.basedir}/src/main/resources/lib/aliyun-java-sdk-core-3.2.2.jar</systempath>
</dependency>
<dependency>
 <groupid>aliyun-message-sdk-mns</groupid>
 <artifactid>aliyun-message-sdk-mns</artifactid>
 <version>1.1.8</version>
 <scope>system</scope>
 <systempath>${project.basedir}/src/main/resources/lib/aliyun-sdk-mns-1.1.8.jar</systempath>
</dependency>
<dependency>
 <groupid>aliyun-java-sdk-dysmsapi</groupid>
 <artifactid>aliyun-java-sdk-dysmsapi</artifactid>
 <version>1.0.0</version>
 <scope>system</scope>
 <systempath>${project.basedir}/src/main/resources/lib/aliyun-java-sdk-dysmsapi-1.0.0-sanpshot.jar</systempath>
</dependency>

注意, <groupid>、<artifactid>、<version>隨意填寫。<scope>system</scope>必須要加,這表示導入本地的jar包。

${project.basedir}為項目的根路徑。

建立aliyunmessageutil工具類

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
public class aliyunmessageutil {
 private static final string product = "dysmsapi";
 //產品域名,開發者無需替換
 private static final string domain = "dysmsapi.aliyuncs.com";
 // 此處需要替換成開發者自己的ak(在阿里云訪問控制臺尋找)
 private static final string accesskeyid = "這里替換你的accesskeyid";
 private static final string accesskeysecret = "這里替換你的accesskeysecret";
 public static sendsmsresponse sendsms(map<string, string> parammap) throws com.aliyuncs.exceptions.clientexception {
  //可自助調整超時時間
  system.setproperty("sun.net.client.defaultconnecttimeout", "10000");
  system.setproperty("sun.net.client.defaultreadtimeout", "10000");
  //初始化acsclient,暫不支持region化
  iclientprofile profile = defaultprofile.getprofile("cn-hangzhou", accesskeyid, accesskeysecret);
  defaultprofile.addendpoint("cn-hangzhou", "cn-hangzhou", product, domain);
  iacsclient acsclient = new defaultacsclient(profile);
  //組裝請求對象-具體描述見控制臺-文檔部分內容
  sendsmsrequest request = new sendsmsrequest();
  //必填:待發送手機號
  request.setphonenumbers(parammap.get("phonenumber"));
  //必填:短信簽名-可在短信控制臺中找到
  request.setsignname(parammap.get("msgsign"));
  //必填:短信模板-可在短信控制臺中找到
  request.settemplatecode(parammap.get("templatecode"));
  //可選:模板中的變量替換json串,如模板內容為"親愛的${name},您的驗證碼為$[code]"時,此處的值為
  request.settemplateparam(parammap.get("jsoncontent"));
  //選填-上行短信擴展碼(無特殊需求用戶請忽略此字段)
//  request.setsmsupextendcode(parammap.get("extendcode"));
  //可選:outid為提供給業務方擴展字段,最終在短信回執消息中將此值帶回給調用者
//  request.setoutid(parammap.get("outid"));
  //hint 此處可能會拋出異常,注意catch
  sendsmsresponse sendsmsresponse = acsclient.getacsresponse(request);
  return sendsmsresponse;
 }
}

sendsms(map<string, string> parammap)方法是我封裝的方法。傳入的參數是parammap,其中包含以下屬性:

phonenumber:接受者手機號

msgsign:短信簽名名稱。在控制臺的短信簽名里能找到。

templatecode:短信模版的code。見控制臺中的模版code。

jsoncontent:需要替換的變量的json字符串。對于驗證碼來說,string jsoncontent = "{\"number\":\"" + randomnum + "\"}";即可。其中randomnum是隨機生成的6位驗證碼。

extendcode:上行短信模板的驗證碼,不需要的話可以忽略

outid:擴展字段,不需要則可以忽略

調用demo

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
public string sendmsg() throws lgdserviceexception, clientexception {
 string phonenumber = "18888888888";
 string randomnum = createrandomnum(6);
 string jsoncontent = "{\"number\":\"" + randomnum + "\"}";
 map<string, string> parammap = new hashmap<>();
 parammap.put("phonenumber", phonenumber);
 parammap.put("msgsign", "喝酒不騎馬");
 parammap.put("templatecode", "xxxxxxxx");
 parammap.put("jsoncontent", jsoncontent);
 sendsmsresponse sendsmsresponse = aliyunmessageutil.sendsms(parammap);
 if(!(sendsmsresponse.getcode() != null && sendsmsresponse.getcode().equals("ok"))) {
  if(sendsmsresponse.getcode() == null) {
   //這里可以拋出自定義異常
  }
  if(!sendsmsresponse.getcode().equals("ok")) {
    //這里可以拋出自定義異常
  }
 }
}
/**
 * 生成隨機數
 * @param num 位數
 * @return
 */
public static string createrandomnum(int num){
 string randomnumstr = "";
 for(int i = 0; i < num;i ++){
  int randomnum = (int)(math.random() * 10);
  randomnumstr += randomnum;
 }
 return randomnumstr;
}

總結

短信效果如圖所示

Springboot實現阿里云通信短信服務有關短信驗證碼的發送功能 

對于驗證碼的校驗,可參見我的另一篇博文springboot實現短信驗證碼校驗.

以上所述是小編給大家介紹的springboot實現阿里云通信短信服務有關短信驗證碼的發送功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!

原文鏈接:http://blog.csdn.net/Colton_Null/article/details/77283193

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 1024免费福利永久观看网站 | 亚洲欧美日韩精品久久亚洲区 | 精品午夜寂寞影院在线观看 | 日韩精品视频观看 | 日韩日韩日韩手机看片自拍 | 日韩专区| 调教催眠改造np总攻 | 国产好深好硬好爽我还要视频 | 逼中极品| 精品欧美一区二区在线观看欧美熟 | 国产全部理论片线观看 | 久久久久久久久性潮 | 亚洲高清毛片一区二区 | 欧美深夜在线 | 免费yjsp妖精com | 四虎tv在线观看884aa | 国产成人亚洲精品乱码在线观看 | 亚洲精品一区二区三区在线看 | 果冻传媒在线播放观看228集 | 国色天香社区视频免费高清在线观看 | 国产在线观看精品香蕉v区 国产在线观看a | 久久免费看少妇高潮A片特爽 | 国产在线观看91 | 青青国产成人久久激情911 | 国产精品午夜性视频网站 | 女人麻豆国产香蕉久久精品 | 亚洲国产婷婷俺也色综合 | 欧美一区二区三区四区五区六区 | 好吊妞视频998www | 四虎影院永久网站 | 成人免费草草视频 | 国产精品理论片 | 日本不卡在线观看免费v | 好性20岁 | 国产高清精品自在久久 | 亚洲美色综合天天久久综合精品 | 男人天堂bt | 精品视频一区二区观看 | 晚上禁用的十大黄台视频 | 日本男女视频 | 91精品国产品国语在线不卡 |