路飛學城專案之整合騰訊雲簡訊服務、簡訊驗證碼介面
文章目錄
1、整合騰訊雲簡訊服務
1.1、說明
1、API文件,介面的使用說明
2、SDK,基於開發語言封裝的可以直接呼叫的功能(工具)集合
官網sdk使用文件中找到安裝命令: pip install qcloudsms_py
按照sdk使用說明進行開發: https://cloud.tencent.com/document/product/382/11672
# 所有配置換成申請的資料
# 申請的簡訊應用 SDK AppID
appid = 1400
# 申請的簡訊應用 SDK AppKey
appkey = "ba81"
# 申請的簡訊模板ID,需要在簡訊控制檯中申請
template_id = 5447
# 申請的簽名,引數使用的是'簽名內容',而不是'簽名ID'
sms_sign = "allen的技術棧"
from qcloudsms_py import SmsSingleSender
sender = SmsSingleSender(appid, appkey)
import random
def get_code():
code = ''
for i in range(4):
code += str(random.randint(0, 9))
return code
mobile = 13344556677
# 模板所需引數和申請的模板中佔位符要保持一致
code = get_code()
print(code)
params = [code, 5]
try:
result = sender.send_with_param(86, mobile, template_id, params, sign=sms_sign, extend="", ext="")
if result and result.get('result') == 0:
print('傳送成功')
except Exception as e:
print('簡訊傳送失敗: %s' % e)
1.2、簡訊服務二次封裝
在libs下建立 tx_sms 包
1.2.1、init.py
from .sms import get_code, send_code
1.2.2、settings.py
# 申請的簡訊應用 SDK AppID
APP_ID = 1400
# 申請的簡訊應用 SDK AppKey
APP_KEY = "ba81"
# 申請的簡訊模板ID,需要在簡訊控制檯中申請
TEMPLATE_ID = 5447
# 申請的簽名,引數使用的是'簽名內容',而不是'簽名ID'
SIGN = "allen的技術棧"
1.2.3、sms.py
import random
def get_code():
code = ''
for i in range(4):
code += str(random.randint(0, 9))
return code
from qcloudsms_py import SmsSingleSender
from . import settings
from utils.logging import logger
sender = SmsSingleSender(settings.APP_ID, settings.APP_KEY)
def send_code(mobile, code, exp):
try:
result = sender.send_with_param(
86,
mobile,
settings.TEMPLATE_ID,
(code, exp),
sign=settings.SIGN,
extend="", ext=""
)
if result and result.get('result') == 0:
return True
logger.error('簡訊傳送失敗: %s' % result.get('errmsg'))
except Exception as e:
logger.critical('簡訊傳送異常: %s' % e)
return False
2、簡訊驗證碼介面
1、前端傳送get請求,攜帶手機號,呼叫封裝好的傳送簡訊介面,完成傳送簡訊,給使用者返回提示資訊
2 路由: send_code 檢視函式: SendCodeView
3、惡意使用你的介面解決方式:
(1) 限制頻: 手機號一分鐘一次
(2) 限制ip: 一分鐘一次
(3) 傳送驗證碼之前,先輸入驗證碼(可以整合極驗滑動驗證碼)
2.1、路由
router.register('', views.SendCodeView, basename='sendcodeview')
2.2、檢視函式
import re
from django.core.cache import cache
from django.conf import settings
class SendCodeView(ViewSet):
@action(methods=['GET', ], detail=False)
def send_code(self, request, *args, **kwargs):
mobile = request.GET.get('mobile')
if mobile is None:
return APIResponse(status=1, msg='手機號不能為空')
if re.match(r'^1[3-9][0-9]{9}$', mobile):
# 生成驗證碼
code = sms.get_code()
flag, msg = sms.send_sms(mobile, code)
if flag:
# 儲存驗證碼 3分鐘
cache.set(settings.SMS_CACHE_KEY % {'mobile': mobile}, code, settings.SMS_CACHE_TIME)
return APIResponse(msg=msg)
else:
return APIResponse(status=1, msg=msg)
else:
return APIResponse(status=1, msg='手機號不合法')
dev.py中快取的配置
# 快取到記憶體中
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', # 指定快取使用的引擎
'LOCATION': 'unique-snowflake', # 寫在記憶體中的變數的唯一值
'TIMEOUT': 300, # 快取超時時間(預設為300秒,None表示永不過期)
'OPTIONS': {
'MAX_ENTRIES': 300, # 最大快取記錄的數量(預設300)
'CULL_FREQUENCY': 3, # 快取到達最大個數之後,剔除快取個數的比例,即:1/CULL_FREQUENCY(預設3)
}
}
}
user_setting.py中快取的配置
SMS_CACHE_KEY = 'sms_cache_%(mobile)s'
SMS_CACHE_TIME = 60 * 3
相關文章
- 阿里雲簡訊服務的使用-----獲取簡訊驗證碼阿里
- 阿里雲簡訊服務實現網站手機簡訊驗證碼阿里網站
- springboot 專案使用阿里雲簡訊服務傳送手機驗證碼Spring Boot阿里
- Jave Web阿里雲簡訊服務傳送驗證碼Web阿里
- 如何在Vue專案中引入騰訊驗證碼服務Vue
- PHP 攻擊簡訊驗證碼介面PHP
- 03 . Django之騰訊雲簡訊Django
- 創藍253雲通訊平臺---簡訊驗證碼介面說明
- 簡訊驗證碼服務平臺哪個好?
- 【故障公告】騰訊雲簡訊服務故障造成無法傳送手機簡訊
- 阿里雲簡訊服務阿里
- Python 服務端整合 騰訊雲 IM 服務Python服務端
- 簡訊提交驗證
- Laravel6 使用騰訊雲簡訊-新增簡訊模板Laravel
- Laravel6 使用騰訊雲簡訊-修改簡訊模板Laravel
- Laravel6 使用騰訊雲簡訊-傳送簡訊Laravel
- 2020最新 使用阿里雲的簡訊服務傳送簡訊阿里
- Laravel 簡訊擴充套件包 - 目前支援簡訊服務商:阿里雲 / 雲片網 / 騰訊雲 / 簡訊寶 / 賽郵雲 /SendCloud/ 互億無線(支援全網簡訊擴充套件)Laravel套件阿里Cloud
- 簡訊驗證碼“最佳實踐”
- 簡訊驗證碼測試項
- 騰訊雲 圖形驗證碼接入
- 普歌-騰訊雲簡訊+使用node傳送簡訊(3種方法API、SDK)、封裝工具、搭建web服務、寫介面、呼叫介面傳送簡訊、時效性判斷(上)API封裝Web
- 極速指南:在 SpringBoot 中快速整合騰訊雲簡訊功能Spring Boot
- Laravel 阿里雲簡訊服務包Laravel阿里
- Laravel6 使用騰訊雲簡訊-刪除簡訊模板Laravel
- Laravel6 使用騰訊雲簡訊-修改簡訊簽名Laravel
- Laravel6 使用騰訊雲簡訊-新增簡訊簽名Laravel
- 騰訊雲sdk 支援 騰訊雲簡訊 Laravel Notification [最新版]Laravel
- Laravel 極簡使用傳送簡訊 支援阿里雲、騰訊雲Laravel阿里
- Laravel6 使用騰訊雲簡訊-刪除簡訊簽名Laravel
- PHP簡訊驗證碼防刷方案PHP
- JAVAWEB實現簡訊驗證---夢網雲JavaWeb
- Laravel6 使用騰訊雲簡訊-簡訊模板狀態查詢Laravel
- 簡訊驗證實現方式
- 【總結】Java實現簡訊驗證碼Java
- uniapp 實現簡訊驗證碼登入APP
- SpringSceurity(5)---簡訊驗證碼登陸功能Spring
- SpringSceurity(4)---簡訊驗證碼功能實現Spring