驗證碼可能會用在註冊、登陸、找回密碼等多個功能上。
可能會使用手機驗證碼或者郵箱驗證碼等多種方式。
這裡記錄一下自己的驗證碼實現方式。
步驟一:傳送驗證碼
客戶端呼叫傳送驗證碼api
傳入字段
字段
型別
描述
string
郵箱mobile
string
手機號type
string
目的服務
. 允許值
:"register"
,"login"
,"resetpassword"
api收到請求後
需要先檢查一下傳送記錄,看看是否能夠傳送驗證碼:
1檢查驗證碼最小傳送間隔
2檢查驗證碼今日已傳送次數
接著進行傳送記錄:
1重新整理最後傳送時間
2遞增今日傳送次數
然後是儲存驗證碼資訊
結構是這樣的
直接存到快取中,根據activeminute加上過期時間即可。
最後傳送時間以及今日傳送次數也都可以放在快取中。
最後將驗證碼的實際傳送交給佇列處理。傳送出去的驗證碼簡訊或者郵件,可以根據type欄位,說明該驗證碼用於什麼業務上。
步驟二:驗證驗證碼並獲取服務令牌
使用者輸入驗證碼後
客戶端呼叫驗證驗證碼api
傳入字段
字段
型別
描述
addr
string
使用者位址
(郵箱或手機號
).code
number
手機驗證碼
.接到呼叫後
後端先根據addr找到剛才驗證碼資訊
驗證驗證碼是否正確
如果驗證碼正確則生成令牌
令牌的實體
轉換成字串後,使用金鑰加密(防止使用者篡改令牌,金鑰不能公開),得到令牌字串並返回給客戶端。
步驟三:在具體需要驗證碼的業務中,驗證令牌
比如在實際的註冊時
後端使用金鑰解密令牌後得到,檢查令牌中的位址是否就是註冊時填的位址,檢查令牌中的目的服務是不是就是註冊服務,檢查令牌是否還有效。
如果令牌有效才執行實際的註冊步驟。
驗證碼實現
1.gd庫 2.建立影象步驟 1 建立畫布 就是在記憶體中開闢一塊臨時區域,用於儲存圖影象資訊 2 繪製影象 使用各種函式設定影象顏色,背景,填充畫筆,繪製圖形等 3 輸出圖形 以某種格式儲存到伺服器或者輸出到瀏覽器顯示給使用者。注意 直接輸出之前一定要用header 告訴瀏覽器以影象格式來處理該輸...
php驗證碼zhuc php實現驗證碼製作
php實現驗證碼製作 首先,看一張圖了解驗證碼生成的過程。1 生成驗證碼底圖 2 驗證碼內容 3 生成驗證碼 4 對比校驗 驗證碼實現的核心技術分析 a 底圖的 實現,並新增干擾元素 b 生成驗證內容 c 驗證內容儲存在服務端 d 驗證內容的校驗 下面看 實現的過程 這段 實現了產生 隨機數字,隨機...
Java 利用 Redis 實現簡訊驗證碼 邏輯
1.每條驗證碼傳送間隔最小為 1分鐘 2.每個手機號每天最多傳送三條驗證碼 3.驗證碼 5 分鐘內有效 4.次日 00 00 恢 送 1.傳送前驗證手機號是否符合要求 2.生成簡訊驗證碼 3.傳送驗證碼到手機 private final string mobile regex 13 0 9 14 0...