国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

springboot集成阿里云短信驗(yàn)證碼

這篇具有很好參考價(jià)值的文章主要介紹了springboot集成阿里云短信驗(yàn)證碼。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

1.添加pom.xml依賴

<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-core</artifactId>
    <version>4.4.6</version>
<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-dysmsapi</artifactId>
    <version>2.1.0</version>
</dependency>

2.application.yml添加配置文件

#短信
sms:
  aliyun:
    accessKeyID: #keyID
    accessKeySecret: #KeySecret秘鑰
    domain: dysmsapi.aliyuncs.com #固定
    regionId: cn-hangzhou #固定
    templateCode: #模板code
    signName: #簽名名稱

3.創(chuàng)建隨機(jī)驗(yàn)證碼工具類

public class RandomUtils {
	 
	private static final String[] ARR = {"0","1","2","3","4","5","6","7","8","9"};
    private static final Random random = new Random();
 
    /**
     * 生成指定長(zhǎng)度隨機(jī)數(shù)(數(shù)字)
     * @param length 長(zhǎng)度
     * @return 驗(yàn)證碼
     */
    public static String createRandomInt(int length){
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < length; i++) {
            int index = random.nextInt(ARR.length);
            sb.append(ARR[index]);
        }
        return sb.toString();
    }
}

4.創(chuàng)建發(fā)送驗(yàn)證碼工具類

import java.util.HashMap;
import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import com.alibaba.fastjson.JSON;
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;
@Component
public class SendSmsUtils {
	private static Logger log = LoggerFactory.getLogger(SendSmsUtils.class);

	//aliyuncs的參數(shù)
    private static String accessKeyID;

    private static String accessKeySecret;

    //短信api的請(qǐng)求地址  固定
    private static String domain;

    //指定地域名稱 短信API的就是 cn-hangzhou 不能改變
    private static String regionId;

    //您的申請(qǐng)簽名
    private static String signName;

    //你的模板
    private static String templateCode;

    /**
     * 發(fā)送短信接口
     *
     * @param phoneNum 手機(jī)號(hào)
     * @return 驗(yàn)證碼
     */
    public static String sendSms(String phoneNum) {
    	String code = RandomUtils.createRandomInt(6);

        // 指定地域名稱 短信API的就是 cn-hangzhou 不能改變  后邊填寫您的  accessKey 和 accessKey Secret
        DefaultProfile profile = DefaultProfile.getProfile(regionId, accessKeyID, accessKeySecret);
        IAcsClient client = new DefaultAcsClient(profile);

        // 創(chuàng)建通用的請(qǐng)求對(duì)象
        CommonRequest request = new CommonRequest();
        // 指定請(qǐng)求方式
        request.setSysMethod(MethodType.POST);
        // 短信api的請(qǐng)求地址  固定
        request.setSysDomain(domain);
        //簽名算法版本  固定
        request.setSysVersion("2017-05-25");
        //請(qǐng)求 API 的名稱
        request.setSysAction("SendSms");
        //指定地域名稱
        request.putQueryParameter("RegionId", regionId);
        // 要給哪個(gè)手機(jī)號(hào)發(fā)送短信  指定手機(jī)號(hào)
        request.putQueryParameter("PhoneNumbers", phoneNum);
        // 您的申請(qǐng)簽名
        request.putQueryParameter("SignName", signName);
        // 您申請(qǐng)的模板 code
        request.putQueryParameter("TemplateCode", templateCode);

        Map<String, Object> params = new HashMap<>();
        //這里的key就是短信模板中的 ${xxxx}
        params.put("code", code);

        // 放入?yún)?shù)  需要把 map轉(zhuǎn)換為json格式  使用fastJson進(jìn)行轉(zhuǎn)換
        request.putQueryParameter("TemplateParam", JSON.toJSONString(params));

        try {
            CommonResponse response = client.getCommonResponse(request);
            log.info(JSON.parseObject(response.getData(), Map.class).get("Message").toString());
            if(response.getHttpResponse().isSuccess()) {
            	return code;
            }
        } catch (ServerException e) {
            e.printStackTrace();
        } catch (ClientException e) {
            e.printStackTrace();
        }
        return null;
    }
    
    public static String getAccessKeyID() {
		return accessKeyID;
	}
    @Value("${sms.aliyun.accessKeyID}")
	public void setAccessKeyID(String accessKeyID) {
		SendSmsUtils.accessKeyID = accessKeyID;
	}

	public static String getAccessKeySecret() {
		return accessKeySecret;
	}
	@Value("${sms.aliyun.accessKeySecret}")
	public void setAccessKeySecret(String accessKeySecret) {
		SendSmsUtils.accessKeySecret = accessKeySecret;
	}

	public static String getDomain() {
		return domain;
	}
	@Value("${sms.aliyun.domain}")
	public void setDomain(String domain) {
		SendSmsUtils.domain = domain;
	}

	public static String getRegionId() {
		return regionId;
	}
	@Value("${sms.aliyun.regionId}")
	public void setRegionId(String regionId) {
		SendSmsUtils.regionId = regionId;
	}

	public static String getSignName() {
		return signName;
	}
	@Value("${sms.aliyun.signName}")
	public void setSignName(String signName) {
		SendSmsUtils.signName = signName;
	}

	public static String getTemplateCode() {
		return templateCode;
	}
	@Value("${sms.aliyun.templateCode}")
	public void setTemplateCode(String templateCode) {
		SendSmsUtils.templateCode = templateCode;
	}

}

注意事項(xiàng):在application.yml中配置了accessKeyID等參數(shù),想在一個(gè)工具類里面的靜態(tài)方法使用,于是使用了靜態(tài)變量。使用@Value注解獲取值,如下:

@Value("${sms.aliyun.accessKeyID}")
private static String accessKeyID;

debug發(fā)現(xiàn)獲取不到,為null。原因如下:

  • spring不允許/不支持把值注入到靜態(tài)變量中;
  • Spring的@Value依賴注入是依賴set方法;
  • set方法是普通的對(duì)象方法;
  • static變量是類的屬性,static沒有set方法。

?解決辦法,把@Value注解放到set方法上,去除set方法static關(guān)鍵字。如下:

//aliyuncs的參數(shù)
private static String accessKeyID;

@Value("${sms.aliyun.accessKeyID}")
public void setAccessKeyID(String accessKeyID) {
	SendSmsUtils.accessKeyID = accessKeyID;
}
public static String getAccessKeyID() {
	return accessKeyID;
}

?同時(shí),工具類還需要交給spring管理,在類上添加注解@Component

5.測(cè)試文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-427195.html

@GetMapping("sms")
public ResponseBo sms(String phone) {
    String code = SendSmsUtils.sendSms(phone);
    System.out.println(code);
    return ResponseBo.ok(code);
}

到了這里,關(guān)于springboot集成阿里云短信驗(yàn)證碼的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 集成SpringCloudAlibaba短信服務(wù) 短信驗(yàn)證碼

    1.1 SpringCloudAlibaba短信服務(wù)簡(jiǎn)介 短信服務(wù)(Short Message Service)是阿里云為用戶提供的一種通信服務(wù)的能力。 產(chǎn)品優(yōu)勢(shì):覆蓋全面、高并發(fā)處理、消息堆積處理、開發(fā)管理簡(jiǎn)單、智能監(jiān)控調(diào)度 產(chǎn)品功能:短信通知、短信驗(yàn)證碼、推廣短信、異步通知、數(shù)據(jù)統(tǒng)計(jì) 應(yīng)用場(chǎng)景:短信

    2024年01月17日
    瀏覽(22)
  • 詳解織夢(mèng)dedecms短信驗(yàn)證碼功能(阿里短信)

    現(xiàn)在大部分網(wǎng)站都需要用短信驗(yàn)證碼,因?yàn)榭棄?mèng)官方?jīng)]有短信驗(yàn)證碼插件,所以寫了幾個(gè)短信驗(yàn)證碼插件,一個(gè)使用的是阿里云的短信驗(yàn)證碼接口,一個(gè)使用的是阿里大于的短信驗(yàn)證碼接口,一個(gè)使用的是阿里通信短信驗(yàn)證碼接口,另外一個(gè)使用的是云之訊的短信接口。下面

    2024年02月02日
    瀏覽(22)
  • 阿里云短信驗(yàn)證碼實(shí)戰(zhàn)

    阿里云短信驗(yàn)證碼實(shí)戰(zhàn)

    一、創(chuàng)建阿里云短信權(quán)限用戶 1、登陸阿里云之后我們點(diǎn)擊頭像,接著點(diǎn)擊AccessKey: 2、選擇開始使用子用戶 : 3、我們先要?jiǎng)?chuàng)建一個(gè)用戶組: 4、依次點(diǎn)擊新建的用戶組——授權(quán)管理,給用戶組授權(quán),開通短信驗(yàn)證碼服務(wù): 5、接著我們新建一個(gè)用戶(具體用來(lái)操作的賬號(hào)),

    2023年04月22日
    瀏覽(15)
  • SpringBoot中pom.xml配置詳解

    SpringBoot中pom.xml配置詳解

    前言 在Spring Boot開發(fā)中,配置文件是非常重要的一部分,而yml文件作為一種常用的配置文件格式,被廣泛應(yīng)用于Spring Boot項(xiàng)目中。Spring Boot提供了多種方式來(lái)讀取yml文件中的屬性值,開發(fā)者可以根據(jù)具體的需求和場(chǎng)景選擇合適的方式。本文將介紹Spring Boot讀取yml文件的主要方式

    2024年02月07日
    瀏覽(19)
  • 短信驗(yàn)證碼的實(shí)現(xiàn)(阿里云)

    短信驗(yàn)證碼的實(shí)現(xiàn)(阿里云)

    背景:目前在很多項(xiàng)目中都出現(xiàn)使用短信驗(yàn)證碼來(lái)實(shí)現(xiàn)注冊(cè)、登錄、購(gòu)買、支付、轉(zhuǎn)賬等功能,發(fā)短信功能幾乎已經(jīng)成為項(xiàng)目中不可或缺的技術(shù)之一。 選擇一個(gè)合適的編程語(yǔ)言,例如Python、Java或PHP等。 尋找能夠發(fā)送短信的API,例如Twilio、阿里云短信等。 注冊(cè)并獲取API的賬號(hào)

    2024年02月15日
    瀏覽(20)
  • 基于阿里云服務(wù)實(shí)現(xiàn)短信驗(yàn)證碼功能

    基于阿里云服務(wù)實(shí)現(xiàn)短信驗(yàn)證碼功能

    阿里云短信服務(wù)是一項(xiàng)基于云計(jì)算和大數(shù)據(jù)技術(shù)的企業(yè)級(jí)短信平臺(tái)服務(wù)。它能夠?yàn)槠髽I(yè)和開發(fā)者提供高可用、高性能、高穩(wěn)定性的短信發(fā)送服務(wù),可以快速地將各類業(yè)務(wù)通知、驗(yàn)證碼、營(yíng)銷推廣等信息發(fā)送給用戶。在我們經(jīng)常登錄一些系統(tǒng)或者APP時(shí)候,經(jīng)常會(huì)遇到其他登錄登

    2024年02月14日
    瀏覽(24)
  • 在阿里云請(qǐng)求發(fā)短信接口去掉證書驗(yàn)證

    composer require alibabacloud/dysmsapi-20170525 2.0.23 ? cURL error 60: SSL certificate problem: unable to get local issuer certificate (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://dysmsapi.aliyuncs.com/?PhoneNumbers= 兩種方法 第一個(gè)直接關(guān)閉驗(yàn)證 vendorguzzlehttpguzzlesrcHandlerCurlFactory.php 362行 $conf[CURLOPT_S

    2024年02月10日
    瀏覽(18)
  • TP6----------阿里云短信包驗(yàn)證碼登錄

    首先開通阿里云短信包,之后申請(qǐng)短信包簽名,這里大家自行去阿里云申請(qǐng) 安裝阿里云sdk 首先創(chuàng)建Sample類方便調(diào)用,我們需要有短信簽名,簽名模板,阿里云keyId和accessKeySecret 阿里云key在阿里云首頁(yè),右上角有個(gè)acesskey管理就可以看到 Sample.php文件 業(yè)務(wù)邏輯層生成隨機(jī)驗(yàn)證碼

    2024年02月15日
    瀏覽(93)
  • 阿里云 短信服務(wù)——開啟驗(yàn)證碼防盜刷監(jiān)控

    阿里云 短信服務(wù)——開啟驗(yàn)證碼防盜刷監(jiān)控

    由于公司的業(yè)務(wù)要求,目前正在了解并運(yùn)用阿里云的短信服務(wù)。 在短信服務(wù)這兒塊由于涉及到每條短信都需要花費(fèi)一定的費(fèi)用,以及每條短信都會(huì)與用戶進(jìn)行信息交互,所以在這塊兒的別需要注重短信的安全問(wèn)題。本篇博客主要介紹阿里云短信服務(wù)如何開啟驗(yàn)證碼防盜刷監(jiān)控

    2024年02月05日
    瀏覽(16)
  • 【java】【springboot】【idea】springboot項(xiàng)目pom.xml 灰色下劃線

    【java】【springboot】【idea】springboot項(xiàng)目pom.xml 灰色下劃線

    解決方案: 這里我們找到了原因,就是因?yàn)檫x擇了Ignored Files導(dǎo)致pom.xml文件被設(shè)置在maven忽略文件清單中,所以我們將打勾的選項(xiàng)取消,點(diǎn)擊Apply,然后點(diǎn)擊OK

    2024年02月11日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包