手机验证码登录
手機驗證碼登錄
符號說明:
[]:表示可選或某些條件下流程。
需求說明:
用戶可在登錄頁面使用手機驗證碼登錄,若該手機號未綁定則輸入驗證碼后還需輸入用戶賬號密碼進行綁定,綁定后則成功使用驗證碼登錄。
用戶可在控制臺進行新增、修改、刪除綁定手機號的操作。每個用戶最多綁定兩個手機號。
1.流程分析
a.輸入手機號點擊發送驗證碼 —> b.輸入驗證碼點擊確認按鈕 —> [c.未綁定的手機號需要綁定到用戶]
每一步都需要向后臺發送一個請求,三個請求組成一個流程。通過Redis保存請求間的聯系。關于SpringMVC集成Redis可參考文章:Redis單點與集群連接。
ps:為什么要使用Redis? Redis存取方便,性能更好,并可以方便的控制對象的存活時間。
直接使用短信驗證碼登錄,新綁定手機號,與修改手機號主要流程相同但部分細節方面需要進行不同的處理,使用策略模式實現不同細節的處理。
2.代碼邏輯
2.1 Controller層
2.1.1 登錄頁面發送驗證碼接口。對應流程a。參數為手機號,[是否為修改綁定的標識],[舊手機號碼(若為修改綁定則必傳)]。發送驗證碼到手機,接口返回一個隨機數和一個標識是否首次綁定。
前端根據此標識調用不同接口,若已綁定過則調用2.1.2接口獲取登錄成功后的字段(如token信息);若未綁定則調用2.1.3接口進行綁定操縱。
后臺可根據是否為修改綁定,是否為首次綁定調用不同的策略。具體策略下文細講。
ps:發送驗證碼接口可生成一個隨機數返回給前端,隨機數作為key存放在Redis中,value中存放如手機號等校驗驗證碼時需要的信息。
2.1.2 驗證驗證碼接口。參數為驗證碼,接口2.1.1生成的隨機數,其他登錄所需校驗參數。接口驗證驗證碼是否正確。
若驗證碼正確則返回登錄成功后的字段(如token)。
2.1.3 驗證驗證碼接口。參數為驗證碼,接口2.1.1生成的隨機數。返回一個隨機數。
接口驗證驗證碼是否正確,若驗證碼正確則生成隨機數作為key存放在Redis中,value為手機號等信息。
2.1.4 綁定用戶接口。參數為 用戶名,密碼,接口2.1.3生成的隨機數,[是否使用改手機號登錄標識,不傳默認為false],[其他登錄所需校驗參數]。
校驗通過后,將手機號存入數據庫與用戶關聯。若登錄標識為true,則返回登錄成功后的字段(如token)。
2.2 Service層
Service層類圖如下
抽象類提供了protected訪問權限的公共方法(generateVC;verifyVC;userLogin());子類可按需調用。子類實現抽象方法實現每種情景下的訪問細節。Controller層根據不同情況調用不同策略。
將我實現的手機驗證碼登錄流程做個總結,希望有大佬可以指出其中的不足。
總結
- 上一篇: Ubuntu查看usb 设备
- 下一篇: 如何实现同一网络的计算机共享文件,同一个