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