驗證碼實現邏輯設計

2021-08-15 20:53:21 字數 1321 閱讀 1058

驗證碼可能會用在註冊、登陸、找回密碼等多個功能上。

可能會使用手機驗證碼或者郵箱驗證碼等多種方式。

這裡記錄一下自己的驗證碼實現方式。

步驟一:傳送驗證碼

客戶端呼叫傳送驗證碼api

傳入字段

字段

型別

描述

email

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...