短信驗證碼
短信下行
短信下行的使用場景
短信驗證碼就是最常用的一個短信下行的例子,相對於傳統的圖片驗證碼,短信驗證碼最大的好處就是提升了賬號的有效性,注冊這一般都是使用自己的手機號嗎。當然了,除此之外短信驗證碼還可以用於登陸,方便快捷。
短信下行的設計
短信下行的驗證方式,較上行驗證碼簡單很多,這里以短信驗證碼為例:
- 用戶輸入數據號。
- 點擊獲取驗證碼。
- 后端收到請求,根據手機號生成驗證碼,放入緩存,設置有效期,驗證碼以手機短信的形式發給用戶。
- 用戶收到驗證碼,進行校驗。
- 請求后端進行校驗。
- 服務器收到請求,根據手機號、驗證碼和服務器放入緩存中的進行匹配。
短信上行
短信上行的使用場景
短信服務在互聯網中應用的場景很多,比較常見的就是驗證碼了,但下行短信往往受網絡的影響比較大,
經常會出現用戶收不到短信、短信延遲特別大的情況。為了解決這個問題,前輩們提出了一個改進的方案——上行驗證
碼,上行驗證碼出現延遲的情況也有,不過這個延遲在用戶方(網絡不穩定,用戶方會顯示正在發送。。。),只要
用戶將短信放出去了就不會有延遲。
短信驗證碼的設計
這里使用短信上行注冊為例說明下短信上行驗證碼:
- 獲取用戶手機號。
- 帶上手機號請求后端。
- 后端生成驗證碼,將驗證碼和手機號映射存入緩存,並設置過期時間。
- 將生成的驗證碼和短信接收號碼發送給用戶(http形式)。
- 用戶將驗證碼發送給指定的接收號碼。
- 運營商收到用戶的短信后,帶上用戶發送的內容和用戶手機號,調用回調(短信運營商后台可以配置回調url)。
- 回調函數中去驗證用戶的發送內容是否ok,ok之后更新redis緩存中的標記,設置驗證成功。
- 客戶端輪詢,檢測用戶對應的redis緩存標記是否ok,ok則繼續執行操作。
總結
短信驗證經常使用,大大小小的互聯網公司都在用它,但我缺少了那種敏銳的嗅覺,一直沒有意識到他具體是怎么實現的,自以為是的認為很簡單。這次用到了,正好學習總結下。現在發現這個短信驗證這個過程其實還挺有意思的。
2016-8-4 19:55:33
本文版權歸作者iforever(luluyrt@163.com)所有,未經作者本人同意禁止任何形式的轉載,轉載文章之后必須在文章頁面明顯位置給出作者和原文連接,否則保留追究法律責任的權利。