欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳細(xì)介紹Java阿里云的短信驗(yàn)證碼實(shí)現(xiàn)

 更新時(shí)間:2020年05月31日 10:05:25   作者:Qixx_799  
這篇文章主要介紹了詳細(xì)介紹Java阿里云的短信驗(yàn)證碼實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

阿里云手機(jī)短信驗(yàn)證碼

第一步 登錄阿里云開放平臺(tái)

1、進(jìn)入阿里云開放平臺(tái)---->點(diǎn)擊控制臺(tái)

2、點(diǎn)擊AccessKey管理

3、點(diǎn)擊之后會(huì)彈出提示,選擇開始使用子用戶

4、新建一個(gè)用戶組,然后按要求填寫即可

5、創(chuàng)建一個(gè)用戶,按要求填寫內(nèi)容,勾選編程訪問

6、會(huì)得到AccessKey(id,密碼)

要將這個(gè)賬號(hào)保存下來!

//用戶登錄名稱 ====================
//AccessKey ID ====================
//AccessKey Secret ============================

第二步,開通阿里云短信服務(wù)

1、找到短信控制臺(tái)面板,點(diǎn)擊國(guó)內(nèi)消息

2、選擇模板管理,點(diǎn)擊添加模板

以下內(nèi)容按要求填寫即可,申請(qǐng)說明需要有正當(dāng)理由不然審核可能通不過

點(diǎn)擊提交,等待審核

3、步驟同上,點(diǎn)擊簽名管理,添加簽名

注:簽名需要填寫應(yīng)用名稱、網(wǎng)站名稱 例如:(dy學(xué)習(xí)網(wǎng)站) 個(gè)人用戶選擇適用場(chǎng)景的時(shí)候選擇驗(yàn)證碼,申請(qǐng)說明需要填寫正當(dāng)理由。不然可能審核不通過。

提交后等待審核通過即可。

第三步,編寫代碼測(cè)試

1、新建項(xiàng)目

創(chuàng)建一個(gè)Java項(xiàng)目,筆者創(chuàng)建的是SpringBoot項(xiàng)目

2、添加依賴

點(diǎn)擊快速學(xué)習(xí)——> 查看APIDemo,里面會(huì)有maven的依賴和官方的Demo

maven依賴:

<dependency>
 <groupId>com.aliyun</groupId>
 <artifactId>aliyun-java-sdk-core</artifactId>
 <version>4.5.0</version>
</dependency>

3、編寫代碼

簡(jiǎn)單測(cè)試,結(jié)合了redis的使用

controller:

package com.qxx.sendmessage.controller;

import com.qxx.sendmessage.service.SendMessage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.UUID;
import java.util.concurrent.TimeUnit;

/**
 * @author 東亞猛男Qxx
 */

@RestController
@CrossOrigin //跨域的支持
public class Controller {

  @Autowired
  private SendMessage sendMessage;
  @Autowired
  private RedisTemplate<String,String> template;

  //RestFul風(fēng)格請(qǐng)求
  @GetMapping("/send/{phone}")
  public String send(@PathVariable("phone") String phone){
    //先看redis里面該手機(jī)號(hào)儲(chǔ)存的驗(yàn)證碼是否失效
    String code = template.opsForValue().get(phone);
    if (!StringUtils.isEmpty(code)){
      return phone+":"+"驗(yàn)證碼尚未過期!";
    }
    //截取6為字符當(dāng)作驗(yàn)證碼(UUID)
    code = UUID.randomUUID().toString().substring(0, 5);
    HashMap<String,Object> map = new HashMap<>();
    //key必須為code
    map.put("code",code);
    //調(diào)用service層的方法 傳兩個(gè)參數(shù):phone,map
    Boolean flag = sendMessage.sendMessage(phone,map);
    if (flag){
      //存入redis,設(shè)置失效時(shí)間
      template.opsForValue().set(phone,code,5, TimeUnit.MINUTES);
      return phone+":"+"驗(yàn)證碼"+code+"發(fā)送成功!";
    }
    return "發(fā)送失敗";
  }
}

service:

package com.qxx.sendmessage.service.impl;

import com.alibaba.fastjson.JSONObject;
import com.aliyuncs.CommonRequest;
import com.aliyuncs.CommonResponse;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;
import com.qxx.sendmessage.service.SendMessage;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.Map;

/**
 * @author 東亞猛男Qxx
 */
@Service
public class SendMessageImpl implements SendMessage {
  @Override
  public Boolean sendMessage(String phoneNum,Map<String, Object> map) {
    System.out.println(JSONObject.toJSONString(map));
    //連接阿里云,第一個(gè)參數(shù)不用改變,后兩個(gè)填寫自己的accessKeyId和accessSecret
    DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "<accessKeyId>", "<accessSecret>");
    IAcsClient client = new DefaultAcsClient(profile);

    //構(gòu)建請(qǐng)求!
    CommonRequest request = new CommonRequest();

    request.setSysMethod(MethodType.POST);
    request.setSysDomain("dysmsapi.aliyuncs.com"); //不要?jiǎng)?
    request.setSysVersion("2017-05-25"); //不要?jiǎng)?
    request.setSysAction("SendSms");

    //自定義參數(shù)(手機(jī)號(hào),驗(yàn)證碼,簽名,模板)
    request.putQueryParameter("RegionId", "cn-hangzhou");
    request.putQueryParameter("PhoneNumbers", phoneNum);
    request.putQueryParameter("SignName", "簽名");
    request.putQueryParameter("TemplateCode", "模板(SMS-*****)");
    //構(gòu)建一個(gè)短信的驗(yàn)證碼
    request.putQueryParameter("TemplateParam", JSONObject.toJSONString(map));
    try {
      CommonResponse response = client.getCommonResponse(request);
      System.out.println(response.getData());
      return response.getHttpResponse().isSuccess();
    } catch (ServerException e) {
      e.printStackTrace();
    } catch (ClientException e) {
      e.printStackTrace();
    }
    return false;
  }
}

4、測(cè)試

此處用的是postman工具

redis:

短信:

結(jié)語:

可以編寫可復(fù)用的微服務(wù)接口,來實(shí)現(xiàn)驗(yàn)證碼的發(fā)送,根據(jù)實(shí)際情況進(jìn)行封裝

到此這篇關(guān)于詳細(xì)介紹Java阿里云的短信驗(yàn)證碼實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Java阿里云短信驗(yàn)證碼內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解Java并發(fā)工具類之CountDownLatch和CyclicBarrier

    詳解Java并發(fā)工具類之CountDownLatch和CyclicBarrier

    在JDK的并發(fā)包中,有幾個(gè)非常有用的并發(fā)工具類,它們分別是:CountDownLatch、CyclicBarrier、Semaphore和Exchanger,本文主要來講講其中CountDownLatch和CyclicBarrier的使用,感興趣的可以了解一下
    2023-06-06
  • java中BigDecimal的使用踩坑記錄

    java中BigDecimal的使用踩坑記錄

    這篇文章主要為大家詳細(xì)介紹了java中使用BigDecimal會(huì)踩坑的地方以及相關(guān)的解決方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-10-10
  • Java利用Request請(qǐng)求獲取IP地址的方法詳解

    Java利用Request請(qǐng)求獲取IP地址的方法詳解

    在開發(fā)中我們經(jīng)常需要獲取用戶IP地址,通過地址來實(shí)現(xiàn)一些功能,下面這篇文章主要給大家介紹了關(guān)于Java利用Request請(qǐng)求獲取IP地址的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-10-10
  • java servlet手機(jī)app訪問接口(三)高德地圖云存儲(chǔ)及檢索

    java servlet手機(jī)app訪問接口(三)高德地圖云存儲(chǔ)及檢索

    這篇文章主要為大家詳細(xì)介紹了java servlet手機(jī)app訪問接口(三),高德地圖云存儲(chǔ)及檢索,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • Java深入學(xué)習(xí)圖形用戶界面GUI之創(chuàng)建窗體

    Java深入學(xué)習(xí)圖形用戶界面GUI之創(chuàng)建窗體

    圖形編程中,窗口是一個(gè)重要的概念,窗口其實(shí)是一個(gè)矩形框,應(yīng)用程序可以使用其從而達(dá)到輸出結(jié)果和接受用戶輸入的效果,學(xué)習(xí)了GUI就讓我們用它來創(chuàng)建一個(gè)窗體
    2022-05-05
  • 詳解Java線程-守護(hù)線程與用戶線程

    詳解Java線程-守護(hù)線程與用戶線程

    這篇文章主要介紹了Java守護(hù)線程與用戶線程,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • 淺談synchronized方法對(duì)非synchronized方法的影響

    淺談synchronized方法對(duì)非synchronized方法的影響

    下面小編就為大家?guī)硪黄獪\談synchronized方法對(duì)非synchronized方法的影響。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-10-10
  • 實(shí)例解析Json反序列化之ObjectMapper(自定義實(shí)現(xiàn)反序列化方法)

    實(shí)例解析Json反序列化之ObjectMapper(自定義實(shí)現(xiàn)反序列化方法)

    這篇文章主要介紹了實(shí)例解析Json反序列化之ObjectMapper,json自定義序列化的方法,需要的朋友可以了解下。
    2017-09-09
  • Spring Boot 整合 Shiro+Thymeleaf過程解析

    Spring Boot 整合 Shiro+Thymeleaf過程解析

    這篇文章主要介紹了Spring Boot 整合 Shiro+Thymeleaf過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • Java實(shí)現(xiàn)FTP批量大文件上傳下載篇1

    Java實(shí)現(xiàn)FTP批量大文件上傳下載篇1

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)FTP批量大文件上傳下載的基礎(chǔ)篇,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-08-08

最新評(píng)論