1. 短信驗證碼 封裝單例類 的設計模式(先進的思維,請多模仿)
狀態碼000000表示測驗發送成功, 關鍵隱私ID 等全部隱藏,
注意一小時內,只能發送三次, 這是容聯云 規定,
現在優化代碼為django相關引數的傳遞活代碼
現在再看看有沒有優化空間:
仔細看看
這其實是類smsSDK

如果有多個用戶都在 注冊,那么如何讓這個 類只實體化一次,就到下面的
方法去?
那么就用到
單例(讓第一個實體化, 后面所有的都用實體化之后的類屬性走,)
類里面兩個重要方法:new 和 init
new 方法是 創建類 init 是初始化類
優化完成,且驗證啊發送成功


2. 短信驗證碼后端邏輯
請求方法 GET
請求地址 /sms_codes/(?P1[3-9]\d{9})/
引數名 型別 是否必傳 說明
mobile string 是 手機號
image_code string 是 圖形驗證碼
uuid string 是 唯一編號
回應結果:JSON
欄位 狀態碼
說明 errmsg
code 錯誤資訊
介面定義


根據業務邏輯, 寫views:

注意, 這里我們只是湊巧命名成這樣, 理論上,是要看前端 ajax 請求, 里面記不記得定義的 this.username等

注意, redis 中 用delete ,能洗掉任何物件,給舉例看看del

對比圖形驗證碼,注意,這里要回傳的是前端的Json格式啊,
錯誤代碼我們曾經定義過 200. 現在比如又要定義4001. 像這種可能復用的建議抽出來,定義為常數,

所以也用自己準備好的response_code.py ,直接放到utils下,因為 整個專案要用,不管app要用,
現在verifications\views 匯入一下


因此,之前users\views 中的 200 狀態碼應該要改動了, 統一從response_code.py中找對應的,


生成6位亂數驗證碼
肯定用到random模塊,所以在verifications\views中 import random先

保存短信驗證碼

發送短信驗證碼 回應結果
匯入CCP這個類
from billshop.apps.verifications.libs.ronglianyu.ccp_sms import CCP
呼叫CCP 類中的send_message()方法
其中, CCP 如果不加(),就是沒有實體化類,會報錯

由于前端還沒有寫, 所以可以用postman 對現在完成的后端進行測驗,

cmder 中差找redis中保存好的短信驗證碼,
和我手機收到的是一致的哦

到現在位置, 應該還有需要優化的功能,比如, 驗證碼的時效性是300秒,而且都是硬編碼, 所以優化, 搞一個 提取圖形驗證碼失效,

像這種常數量以后不可能到處去改,肯定要做常量,統一管理,

在verifications 下new一個constants.py 并優化

3. 短信驗證碼 前端邏輯
Vue系結短信驗證碼界面
register.html
先注釋原來的代碼, 然后,復制 自己準備好的代碼, code-refomat Code 格式一下,

現在發現,這里面的新的v-model等都沒有定義,所以去register.js完善

通過前端運行, 查看原始碼是否被加載到了前端,來暫時驗證功能一切順利, 同時,可以在這里打斷點除錯,如果有問題, console里會提示

axios請求短信驗證碼 這是重點
整體如下圖

分為驗證碼正確和不正確, 回呼函式 等


4. 補全注冊時短信驗證業務邏輯
需要在users的views中,添加 短信驗證碼資訊,(圖形驗證碼不需要,因為已經在短信驗證碼時,進行了驗證,圖形碼錯誤, 不可能發出短信驗證碼)
from django_redis import get_redis_connection

去前端嘗試一次完整的注冊, 注意,資料庫中可以洗掉一次,否則重復了, 不好玩,
效果完美! 可是沒有存到資料庫,也沒有重定向到首頁啊,

來,那么繼續搞
找到原因, 是之前不需要時,把forms 表單的sms_code 注釋了,現在釋放出來,

同時,再優化一下, 判斷sms_code_server 要decode 之后才嚴謹

@@@ ajax 目前是那些注冊時,失焦后的提示和規則提示,
非常完美的注冊

同時,資料庫中也有了
,時區我沒有改回東八區,哈哈!

5. 避免頻繁發送短信驗證碼
存在的問題:
? 雖然我們在前端界面做了60秒倒計時功能,
? 但是惡意用戶可以繞過前端界面向后端頻繁請求短信驗證碼,
解決辦法:
? 在后端也要限制用戶請求短信驗證碼的頻率,60秒內只允許一次請求短信驗證碼,
? 在Redis資料庫中快取一個數值,有效期設定為60秒,
避免頻繁發送短信驗證碼邏輯分析

分前后端:
避免頻繁發送短信驗證碼邏輯實作
后端驗證



前端優化

啟動執行,看看效果
前端 判斷


注意解鎖


驗證一下
既然前端已經不讓你60秒內再發,為什么還要后端驗證, 因為除錯時, postman只走后端,所以需要后端驗證
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/260392.html
標籤:其他
上一篇:為什么工廠模式可以解耦?(二)
下一篇:Redis集群原理詳解
