Hable sobre el proceso de implementación del inicio de sesión del código de verificación por SMS

1, Construya el código de verificación del teléfono móvil: utilice un objeto aleatorio para generar el número aleatorio requerido como código de verificación, por ejemplo, código de verificación de 4 dígitos: número aleatorio entre 1000 y 9999;

2, Utilice la interfaz para enviar el número de teléfono móvil y los datos del código de verificación a la plataforma SMS, y luego la plataforma SMS envía el código de verificación al número de teléfono móvil designado. Los parámetros de la interfaz generalmente incluyen: número de teléfono móvil objetivo, código de verificación aleatorio (o tiempo de vencimiento), dirección de interfaz de la plataforma , La contraseña de la plataforma;

3, Guarde la información devuelta por la interfaz (generalmente datos de texto json, y luego debe convertirse al formato de objeto json);

4, Almacene el código de verificación del número de teléfono móvil y el tiempo de operación en la Sesión para una verificación posterior;

5, Recibir el código de verificación y otros datos ingresados ​​por el usuario;

6, Compare si el código de verificación enviado es consistente con el código de verificación en la Sesión, y juzgue si la acción presentada está dentro del período de validez;

7, El código de verificación es correcto y dentro del período de vigencia se pasa la solicitud y se procesa el negocio correspondiente.

Uno, primero agregue un paquete jar, se usará la clase de herramienta.

<!--秒滴云的jar包-->
<dependency>
  <groupId>commons-codec</groupId>
  <artifactId>commons-codec</artifactId>
  <version>1.11</version>
</dependency>

2. Aquí solo estoy escribiendo una función de verificación de SMS simple, si se usa otra verificación de voz. . . . Espere, debe ir al documento de descarga oficial de Miaodi Cloud. El siguiente es un documento de configuración escrito para almacenar algunos parámetros

Tres, escriba la clase de herramienta de solicitud http

public class HttpUtil
{
   /**
    * 构造通用参数timestamp、sig和respDataType
    *
    * @return
    */
   public static String createCommonParam()
   {
      // 时间戳
      SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
      String timestamp = sdf.format(new Date());


      // 签名
      String sig = DigestUtils.md5Hex(Config.ACCOUNT_SID + Config.AUTH_TOKEN + timestamp);


      return "×tamp=" + timestamp + "&sig=" + sig + "&respDataType=" + Config.RESP_DATA_TYPE;
   }


   /**
    * post请求
    *
    * @param url
    * 功能和操作
    * @param body
    * 要post的数据
    * @return
    * @throws IOException
    */
   public static String post(String url, String body)
   {
      System.out.println("url:" + System.lineSeparator() + url);
      System.out.println("body:" + System.lineSeparator() + body);


      String result = "";
      try
      {
         OutputStreamWriter out = null;
         BufferedReader in = null;
         URL realUrl = new URL(url);
         URLConnection conn = realUrl.openConnection();


         // 设置连接参数
         conn.setDoOutput(true);
         conn.setDoInput(true);
         conn.setConnectTimeout(5000);
         conn.setReadTimeout(20000);
         conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
         // 提交数据
         out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");
         out.write(body);
         out.flush();


         // 读取返回数据
         in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
         String line = "";
         boolean firstLine = true; // 读第一行不加换行符
         while ((line = in.readLine()) != null)
         {
            if (firstLine)
            {
               firstLine = false;
            } else
            {
               result += System.lineSeparator();
            }
            result += line;
         }
      } catch (Exception e)
      {
         e.printStackTrace();
      }
      return result;
   }


   /**
    * 回调测试工具方法
    *
    * @param url
    * @param reqStr
    * @return
    */
   public static String postHuiDiao(String url, String body)
   {
      String result = "";
      try
      {
         OutputStreamWriter out = null;
         BufferedReader in = null;
         URL realUrl = new URL(url);
         URLConnection conn = realUrl.openConnection();


         // 设置连接参数
         conn.setDoOutput(true);
         conn.setDoInput(true);
         conn.setConnectTimeout(5000);
         conn.setReadTimeout(20000);


         // 提交数据
         out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");
         out.write(body);
         out.flush();


         // 读取返回数据
         in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
         String line = "";
         boolean firstLine = true; // 读第一行不加换行符
         while ((line = in.readLine()) != null)
         {
            if (firstLine)
            {
               firstLine = false;
            } else
            {
               result += System.lineSeparator();
            }
            result += line;
         }
      } catch (Exception e)
      {
         e.printStackTrace();
      }
      return result;
   }
}

Cuarto, el método de generar números de cuatro dígitos.

public static String runNumber() {
   String str="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
   StringBuilder sb=new StringBuilder(4);
   for(int i=0;i<4;i++)
   {
      char ch=str.charAt(new Random().nextInt(str.length()));
      sb.append(ch);
   }
   System.out.println(sb.toString());
   String code = sb.toString();
   return code;
}

4. Ejecute el método execute (), se enviará correctamente

public class IndustrySMS
{
   private static String operation = "/industrySMS/sendSMS";


   private static String accountSid = Config.ACCOUNT_SID;
   private static String to = "15342349382";
  private static String smsContent = "【小陶科技】登录验证码:{"+runNumber().toString()+"},如非本人操作,请忽略此短信。";


   /**
    * 验证码通知短信
    */
   public static void execute()
   {
      String tmpSmsContent = null;
       try{
         tmpSmsContent = URLEncoder.encode(smsContent, "UTF-8");
       }catch(Exception e){
       }
       String url = Config.BASE_URL + operation;
       String body = "accountSid=" + accountSid + "&to=" + to + "&smsContent=" + tmpSmsContent
           + HttpUtil.createCommonParam();


       // 提交请求
       String result = HttpUtil.post(url, body);
       System.out.println("result:" + System.lineSeparator() + result);
}

 Si cree que este artículo es útil para usted, le puede gustar y seguirlo para respaldarlo, o puede seguir mi cuenta pública. Hay más artículos técnicos sobre productos secos e información relacionada para compartir, ¡todos aprenden y progresan juntos!


Supongo que te gusta

Origin blog.csdn.net/weixin_50205273/article/details/108647115
Recomendado
Clasificación