国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - springboot短信驗證碼登錄功能的實現(xiàn)

springboot短信驗證碼登錄功能的實現(xiàn)

2021-08-04 09:39極客521 Java教程

這篇文章主要介紹了springboot短信驗證碼登錄功能的實現(xiàn),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

1 、構(gòu)造手機驗證碼:使用 random 對象生成要求的隨機數(shù)作為驗證碼,例如 4 位驗證碼: 1000~9999 之間隨機數(shù);

2 、使用接口向短信平臺發(fā)送手機號和驗證碼數(shù)據(jù),然后短信平臺再把驗證碼發(fā)送到制定手機號上,接口參數(shù)一般包括:目標手機號,隨機驗證碼 (或包含失效時間),平臺接口地址,平臺口令;

3 、保存接口返回的信息(一般為 json 文本數(shù)據(jù),然后需轉(zhuǎn)換為 json 對象格式);

4 、將手機號 — 驗證碼、操作時間存入 Session 中,作為后面驗證使用;

5 、接收用戶填寫的驗證碼及其他數(shù)據(jù);

6 、對比提交的驗證碼與 Session 中的驗證碼是否一致,同時判斷提交動作是否在有效期內(nèi);

7 、驗證碼正確且在有效期內(nèi),請求通過,處理相應(yīng)的業(yè)務(wù)。

一,首先添加一個 jar 包,工具類會用到。

  1. <!--秒滴云的jar包-->
  2. <dependency>
  3. <groupId>commons-codec</groupId>
  4. <artifactId>commons-codec</artifactId>
  5. <version>1.11</version>
  6. </dependency>

二、我這里只是編寫一個簡單的短信驗證功能,要是用其他的語音驗證。

等等需要去秒滴云官方下載文檔,下面是編寫的一個 config 文檔,專門存放一些參數(shù)

 

springboot短信驗證碼登錄功能的實現(xiàn)

三、編寫 http 請求工具類

  1. public class HttpUtil
  2. {
  3. /**
  4. * 構(gòu)造通用參數(shù)timestamp、sig和respDataType
  5. *
  6. * @return
  7. */
  8. public static String createCommonParam()
  9. {
  10. // 時間戳
  11. SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
  12. String timestamp = sdf.format(new Date());
  13.  
  14. // 簽名
  15. String sig = DigestUtils.md5Hex(Config.ACCOUNT_SID + Config.AUTH_TOKEN + timestamp);
  16.  
  17. return "×tamp=" + timestamp + "&sig=" + sig + "&respDataType=" + Config.RESP_DATA_TYPE;
  18. }
  19.  
  20. /**
  21. * post請求
  22. *
  23. * @param url
  24. * 功能和操作
  25. * @param body
  26. * 要post的數(shù)據(jù)
  27. * @return
  28. * @throws IOException
  29. */
  30. public static String post(String url, String body)
  31. {
  32. System.out.println("url:" + System.lineSeparator() + url);
  33. System.out.println("body:" + System.lineSeparator() + body);
  34.  
  35. String result = "";
  36. try
  37. {
  38. OutputStreamWriter out = null;
  39. BufferedReader in = null;
  40. URL realUrl = new URL(url);
  41. URLConnection conn = realUrl.openConnection();
  42.  
  43. // 設(shè)置連接參數(shù)
  44. conn.setDoOutput(true);
  45. conn.setDoInput(true);
  46. conn.setConnectTimeout(5000);
  47. conn.setReadTimeout(20000);
  48. conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
  49. // 提交數(shù)據(jù)
  50. out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");
  51. out.write(body);
  52. out.flush();
  53.  
  54. // 讀取返回數(shù)據(jù)
  55. in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
  56. String line = "";
  57. boolean firstLine = true; // 讀第一行不加換行符
  58. while ((line = in.readLine()) != null)
  59. {
  60. if (firstLine)
  61. {
  62. firstLine = false;
  63. } else
  64. {
  65. result += System.lineSeparator();
  66. }
  67. result += line;
  68. }
  69. } catch (Exception e)
  70. {
  71. e.printStackTrace();
  72. }
  73. return result;
  74. }
  75.  
  76. /**
  77. * 回調(diào)測試工具方法
  78. *
  79. * @param url
  80. * @param reqStr
  81. * @return
  82. */
  83. public static String postHuiDiao(String url, String body)
  84. {
  85. String result = "";
  86. try
  87. {
  88. OutputStreamWriter out = null;
  89. BufferedReader in = null;
  90. URL realUrl = new URL(url);
  91. URLConnection conn = realUrl.openConnection();
  92.  
  93. // 設(shè)置連接參數(shù)
  94. conn.setDoOutput(true);
  95. conn.setDoInput(true);
  96. conn.setConnectTimeout(5000);
  97. conn.setReadTimeout(20000);
  98.  
  99. // 提交數(shù)據(jù)
  100. out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");
  101. out.write(body);
  102. out.flush();
  103.  
  104. // 讀取返回數(shù)據(jù)
  105. in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
  106. String line = "";
  107. boolean firstLine = true; // 讀第一行不加換行符
  108. while ((line = in.readLine()) != null)
  109. {
  110. if (firstLine)
  111. {
  112. firstLine = false;
  113. } else
  114. {
  115. result += System.lineSeparator();
  116. }
  117. result += line;
  118. }
  119. } catch (Exception e)
  120. {
  121. e.printStackTrace();
  122. }
  123. return result;
  124. }
  125. }

四、生成四位數(shù)的方法

  1. public static String runNumber() {
  2. String str="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
  3. StringBuilder sb=new StringBuilder(4);
  4. for(int i=0;i<4;i++)
  5. {
  6. char ch=str.charAt(new Random().nextInt(str.length()));
  7. sb.append(ch);
  8. }
  9. System.out.println(sb.toString());
  10. String code = sb.toString();
  11. return code;
  12. }

執(zhí)行方法 execute(),便會發(fā)送成功

  1. public class IndustrySMS
  2. {
  3. private static String operation = "/industrySMS/sendSMS";
  4.  
  5. private static String accountSid = Config.ACCOUNT_SID;
  6. private static String to = "15342349382";
  7. private static String smsContent = "【小陶科技】登錄驗證碼:{"+runNumber().toString()+"},如非本人操作,請忽略此短信。";
  8.  
  9. /**
  10. * 驗證碼通知短信
  11. */
  12. public static void execute()
  13. {
  14. String tmpSmsContent = null;
  15. try{
  16. tmpSmsContent = URLEncoder.encode(smsContent, "UTF-8");
  17. }catch(Exception e){
  18. }
  19. String url = Config.BASE_URL + operation;
  20. String body = "accountSid=" + accountSid + "&to=" + to + "&smsContent=" + tmpSmsContent
  21. + HttpUtil.createCommonParam();
  22.  
  23. // 提交請求
  24. String result = HttpUtil.post(url, body);
  25. System.out.println("result:" + System.lineSeparator() + result);
  26. }

到此這篇關(guān)于springboot短信驗證碼登錄功能的實現(xiàn)的文章就介紹到這了,更多相關(guān)springboot短信驗證碼登錄內(nèi)容請搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 日韩欧美三区 | 欧洲成人午夜免费大片 | 青青草91青娱盛宴国产 | 国产福利91精品一区二区三区 | 玖玖爱视频在线 | 黄色片小视频 | 国内精品久久久久久久97牛牛 | 黄色a视频在线观看 | 日韩精品一区二区在线观看 | 成人高h视频 | 山岸逢花在线观看无删减 | 中文日韩在线 | 国产成人免费视频 | 99久久免费看视频 | 亚洲 中文 欧美 日韩 在线观看 | 毛片在线视频 | 色视频在线播放 | 亚洲国产一区二区在线观看 | 亚洲欧美在线一区 | 亚洲特黄av | 久久久精品国产 | 欧美精品v国产精品v日韩精品 | 欧美精品偷拍 | 欧洲一区二区三区 | 欧美日韩一区精品 | 亚洲激情在线 | 国产视频三区 | 欧美高清免费 | 国产一级在线 | 日韩激情一区二区 | 国产99久久久精品视频 | 久久久久99啪啪免费 | 日韩精品久久久久久 | 免费观看黄视频 | 欧美福利视频 | 一本色道久久综合狠狠躁篇怎么玩 | 亚洲三级av| 久久精品久久久久久久久久16 | 亚洲精品国产一区 | 夜夜操操 | 亚州国产 |