Springboot Ali SDK intégration nuage pour envoyer le code de vérification SMS notes SMS

Tout d'abord, Ali conditions de service de messagerie cloud

1. Ali nuage ouvert compte service SMS
Insérer ici l'image Description
2. Application signature SMS signName et modèles templateCode, et à travers. Ne pas modifier le code du modèle
Ajouter une signature SMS (les développeurs individuels recommandent de choisir un code de vérification, mots doivent ajouter de l'information d'entreprise), ajouter un modèle de message (recommandé de modèles recommandés, vérification peu plus vite)
Insérer ici l'image Description
Insérer ici l'image Description
Insérer ici l'image Description
3. Définissez accessKeyId et secret, etPour vous assurer que le compte de l'argent ou envisagez d'acheter des packages SMS
Insérer ici l'image Description

En second lieu, le code commence

1. Créer un projet Springboot bonjour-lapin, la dépendance à l'importation de base,dépendance officielle (essayez la dernière version)

<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>

agencement 2.application.yml

alisms:
  accessKeyId: AccessKey管理里的accessKeyId
  accessSecret: AccessKey管理里的Secret
  signName: 短信签名名称
  templateCode: 模版code

3. Modifier la démo officielle encapsulé, 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. Nouveau sms.html testé sous ressources / modèles

<!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. la transmission et la vérification 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 {


    @Autowired
    private SendSmsUtil sendSmsUtil;

    @Data
    public 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.La génération d'un code aléatoire vérification outils VerificationCode.java:outils de mise en œuvre des codes Java générés au hasard

Les premiers tests par le code, comme la vérification du numéro de téléphone mobile qui impliquait comme celui-ci ne tiennent pas compte

Publié 24 articles originaux · a gagné les éloges 3 · Vues 1265

Je suppose que tu aimes

Origine blog.csdn.net/Joe14103/article/details/105047793
conseillé
Classement