摘要:在本周的項目中用到了一個手機短信驗證的功能,雖然代碼都是已經(jīng)寫好了的,自己只是拿來就用,但事后還是得學習一下思路的。
在本周的項目中用到了一個手機短信驗證的功能,雖然代碼都是已經(jīng)寫好了的,自己只是拿來就用,但事后還是得學習一下思路的。
短信驗證整體思路主要流程如下
基礎(chǔ)功能還是比較簡單的畢竟發(fā)短信用到是現(xiàn)成的接口,本項目用到的短信驗證接口的網(wǎng)站是這個
/** * 批量發(fā)送短信 * * @param phoneNumbers * @param message 短信內(nèi)容 * @return 成功200 ,不成功400(短信驗證錯誤或未傳入發(fā)送手機號) * @throws IOException */ @Override public Integer sentMessage(Set小難點phoneNumbers, String message) throws IOException { HttpClient client = new HttpClient(); PostMethod post = new PostMethod(sOpenUrl); // 在頭文件中設(shè)置轉(zhuǎn)碼 post.addRequestHeader("Content-Type", ContentType); // 注冊的用戶名 NameValuePair[] data = {new NameValuePair("action", "sendOnce"), // 注冊成功后,登錄網(wǎng)站使用的密鑰 new NameValuePair("ac", account), // 手機號碼 new NameValuePair("authkey", authkey), new NameValuePair("cgid", cgid.toString()), new NameValuePair("c", message), new NameValuePair("m", String.join(",", phoneNumbers))}; // 設(shè)置短信內(nèi)容 post.setRequestBody(data); client.executeMethod(post); post.releaseConnection(); return post.getStatusCode(); }
主要的難點我認為主要就是:怎么保存已經(jīng)發(fā)送的驗證碼并判斷是否失效。
在本項目中是直接通過一個服務(wù)中的hashMap把驗證碼與手機號的信息直接存到內(nèi)存中,畢竟本項目同時注冊人數(shù)不可能太多,而幾個字符串內(nèi)存還是承受的住的。
HashMap> hashMap = new HashMap<>(); // 緩存值 String EXPIRE_DATE_KEY = "expireDate"; // 數(shù)據(jù)失效時間關(guān)鍵字(指在某個時間失效) String VALUE_KEY = "value"; // 存數(shù)據(jù)的KEY // 存放緩存的方法 static void put(String key, Object object, Integer expireTime) { HashMap hashMap = new HashMap<>(); hashMap.put(MemoryCacheService.VALUE_KEY, object); hashMap.put(MemoryCacheService.EXPIRE_DATE_KEY, System.currentTimeMillis() + expireTime * 1000); MemoryCacheService.hashMap.put(key, hashMap); }
通過手機號查詢驗證碼
/** * 獲取緩存 * * @param key * @return */ static Object get(String key) { if (MemoryCacheService.shouldClearExpiredData()) { logger.info("定期清除過期緩存"); MemoryCacheService.clearExpiredData(); } HashMap總結(jié)cachedObject = MemoryCacheService.getCachedObjectByKey(key); if (cachedObject == null) { return null; // 未獲取到緩存數(shù)據(jù),返回null } if (MemoryCacheService.isExpired(cachedObject)) { logger.info("緩存過期,清除緩存.返回null"); MemoryCacheService.remove(key); return null; } return cachedObjec
本以為這個功能的博客能寫不少,畢竟還是讓我感覺很新鮮的,但真的開始才發(fā)現(xiàn)沒啥重點可寫,限制ip請求次數(shù)的功能
還寫掉了,要是詳細寫怎么實現(xiàn)的感覺又沒必要,畢竟邏輯實際上還是很簡單的看看流程圖就能理解了,就這樣吧。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/74482.html
摘要:短信驗證碼平臺短信驗證碼平臺哪個比較好短信驗證碼平臺哪個好短信驗證碼 目前短信驗證碼大家應該都很熟悉了,尤其當你在一些購物網(wǎng)站等注冊會員或者修改信息時都需要驗證碼。而短信驗證碼是商家為了降低重復注冊或者非法注冊,就需要短信驗證碼來幫忙用戶的真實性。那么,目前可以用的短信驗證碼平臺哪個比較好呢?下面就讓摩杜云小杜來跟大家講解一下吧。企業(yè)要想知道目前可以用的短信驗證...
摘要:短信驗證碼的到達率是維護用戶的關(guān)鍵,那些號稱永久免費的短信驗證碼平臺其實是不可靠的,因為它基本不會保證到達率。摩杜云免費短信驗證碼平臺超過試用部分每條約分錢起,具體以行業(yè)領(lǐng)域和客服報價為準。 短信驗證碼平臺軟件一般都是免費的,只要在摩杜云注冊個賬號就可以免費使用,同時還可以享受20條短信左右的試用。但后續(xù)通過平臺向用戶發(fā)送短信驗證碼是收費的,畢竟短信服務(wù)商從運營...
摘要:現(xiàn)如今,要想分辨短信驗證碼平臺哪些比較好用,需要從速度到達率穩(wěn)定性等幾個方面來決定。短信驗證碼平臺是很講究時效性,所以速度快到達率高是很關(guān)鍵的。在選擇短信驗證碼平臺的時候,一定要注意以上這些方面。 現(xiàn)如今,要想分辨短信驗證碼平臺哪些比較好用,需要從速度、到達率、穩(wěn)定性等幾個方面來決定。短信驗證碼平臺是很講究時效性,所以速度快、到達率高是很關(guān)鍵的。另外,在選擇短信...
摘要:以網(wǎng)易云易盾的驗證碼產(chǎn)品為例行為驗證碼具備運用大數(shù)據(jù)分析和機器學習模型進行優(yōu)化升級的特點。路徑可以理解為驗證碼展示用戶行為分析機器人學習返回驗證結(jié)果機器模型升級的循環(huán),保證了網(wǎng)易云易盾行為式驗證碼的不斷迭代升級。 當然有必要,這里我們來聊一個惡意短信驗證的案例,通過這個案例我們就能更好理解短信驗證碼和圖片驗證碼這兩者的關(guān)系了。 討論防止惡意短信驗證之前,我們先來看看什么是惡意短信驗證及...
摘要:支持短信驗證碼未驗證時,用戶再次請求驗證碼,在有效分鐘內(nèi)驗證碼保持一致。集成短信發(fā)送路由,支持和發(fā)送方式。有效期為分鐘,請盡快驗證。 Laravel Sms Laravel 貼合實際需求同時滿足多種通道的短信發(fā)送組件 showImg(https://segmentfault.com/img/remote/1460000013101233);showImg(https://segment...
閱讀 3683·2021-09-22 15:34
閱讀 1194·2019-08-29 17:25
閱讀 3405·2019-08-29 11:18
閱讀 1379·2019-08-26 17:15
閱讀 1745·2019-08-23 17:19
閱讀 1235·2019-08-23 16:15
閱讀 723·2019-08-23 16:02
閱讀 1340·2019-08-23 15:19