當前位置:
                    首頁 >
                            前端技术
>                            javascript
>内容正文                
                        
                    javascript
Springboot整合阿里云短信SDK发送短信验证码笔记
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                Springboot整合阿里云短信SDK发送短信验证码笔记
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                一、阿里云短信服務條件
1.阿里云帳號開通短信服務
 
 2.申請短信簽名signName和模版templateCode,并通過。模版中的code不要變
 添加短信簽名(個人開發者建議選擇驗證碼,通用的話需要補充企業信息),添加短信模版(推薦使用推薦模版,審核快一點)
 
 
 
 3.設置accessKeyId和Secret,且確保賬戶有錢或者可以考慮購買短信套餐
 
二、代碼開始
1.創建Springboot項目hello-rabbit,導入核心依賴,官方依賴(盡量最新版)
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.2.RELEASE</version><relativePath/> </parent> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId> </dependency><!-- 阿里云短信 SDK for Java --> <dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>4.4.6</version> </dependency>2.application.yml配置
alisms:accessKeyId: AccessKey管理里的accessKeyIdaccessSecret: AccessKey管理里的SecretsignName: 短信簽名名稱templateCode: 模版code3.修改官方demo進行封裝,SendSmsUtil.java
package com.basic.hellorabbit.util;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.google.gson.Gson; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.util.Map; /** * @Description: 短信發送工具 * @Author: Joe * @CreateDate: 2020/3/21 15:49 */ @Service public class SendSmsUtil {@Value("${alisms.accessKeyId}")private String accessKeyId;@Value("${alisms.accessSecret}")private String accessSecret;@Value("${alisms.signName}")private String signName;@Value("${alisms.templateCode}")private String templateCode;public String aliSendSms(String PhoneNumbers,String TemplateParam){String result = "";DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessSecret);IAcsClient client = new DefaultAcsClient(profile);CommonRequest request = new CommonRequest();request.setSysMethod(MethodType.POST);request.setSysDomain("dysmsapi.aliyuncs.com");request.setSysVersion("2017-05-25");request.setSysAction("SendSms");request.putQueryParameter("RegionId", "cn-hangzhou");request.putQueryParameter("PhoneNumbers", PhoneNumbers);request.putQueryParameter("SignName", signName);request.putQueryParameter("TemplateCode", templateCode);request.putQueryParameter("TemplateParam", TemplateParam);try {CommonResponse response = client.getCommonResponse(request);System.out.println(response.getData());String infojson = response.getData();Gson gson2 = new Gson();Map map = gson2.fromJson(infojson, Map.class);String codes = map.get("Message").toString();System.out.println("codes="+codes);if(codes.equals("OK")){result="ok";}else {result="not_ok";}} catch (ServerException e) {e.printStackTrace();} catch (ClientException e) {e.printStackTrace();}System.out.println("result="+result);return result;}}4.在resources/templates下新建sms.html進行測試
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>短信測試頁面</title> </head> <body> <h3>短信驗證碼發送</h3> <br> <br> <br> <a href="/sendSms/手機號碼">阿里云短信發送</a> <hr><h3>短信驗證</h3> <form method="post" action="/yanSms"><p>手機號碼:<input type="text" name="PhoneNumbers"/></p><p>驗證碼:<input type="text" name="code"/></p><p><input type="submit" value="開始驗證"/></p> </form> </body> </html>5.使用SmsController.java進行發送和驗證
package com.basic.hellorabbit.controller;import com.basic.hellorabbit.util.SendSmsUtil; import com.basic.hellorabbit.util.VerificationCode; import com.google.gson.Gson; import lombok.Data; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession;/** * @Description: 短信 * @Author: Joe * @CreateDate: 2020/3/21 16:31 */ @Controller public class SmsController {@Autowiredprivate SendSmsUtil sendSmsUtil;@Datapublic static class SmsData{String code;public SmsData(String code) {this.code = code;}}/*** 跳轉到短信測試頁面* @return*/@RequestMapping(value = "/toSms",method = RequestMethod.GET)public String toSms(){return "sms";}/*** 發送驗證碼* @param PhoneNumbers 手機號* @return*/@ResponseBody@RequestMapping(value = "/sendSms/{PhoneNumbers}",method = RequestMethod.GET)public String sendSms(@PathVariable String PhoneNumbers, HttpServletRequest request){HttpSession session = request.getSession();//隨機生成驗證碼String numeral = VerificationCode.getNumeral();SmsData smsData = new SmsData(numeral);Gson gson = new Gson();String code = gson.toJson(smsData);String information = sendSmsUtil.aliSendSms(PhoneNumbers, code);session.setAttribute(PhoneNumbers,numeral);session.setMaxInactiveInterval(3 * 60);if(information.equals("ok")){return "成功發送給"+PhoneNumbers+";驗證碼是"+numeral;}return "失敗了"+PhoneNumbers;}/*** 驗證* @param PhoneNumbers* @param code* @param request* @return*/@ResponseBody@RequestMapping(value = "/yanSms",method = RequestMethod.POST)public String yanSms(String PhoneNumbers, String code,HttpServletRequest request){HttpSession session = request.getSession();String ycode = (String) session.getAttribute(PhoneNumbers);if(ycode.equals(code)){return PhoneNumbers+"驗證成功";}return PhoneNumbers+"驗證失敗";}}6.生成隨機驗證碼工具類VerificationCode.java:java實現隨機生成驗證碼工具類
代碼初步測試通過,至于其中涉及到的手機號碼校驗等在此忽略
總結
以上是生活随笔為你收集整理的Springboot整合阿里云短信SDK发送短信验证码笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 如何用好项目管理工具
- 下一篇: 基于librtmp的推流实现
