昨天我們介紹了如何發送驗證信,今天我們要來寫信箱驗證API的邏輯啦~~
以下是我的程式碼
@csrf_protect
def check(request,token): #信箱驗證
if request.method == "POST":
try:
data = json.loads(bytes.decode(request.body,"utf-8"))
token_use = email_token()
email = token_use.confirm_token(token)
user = UserProfile.objects.get(email=email)
user.is_active = True
user.save()
message = {"status":"0"}
except Exception as e:
print(e)
message = {"status":"1"}
return JsonResponse(message)
這邊說明一下function
UserProfile.objects.get(email=email)
:這就是比對資料庫是否跟經由驗證信裡解密的email一樣,有一樣的話,返回資料庫裡符合條件的使用者。user.is_active
:標註活躍帳號,作為驗證信通過的依據。user.save()
:儲存修改的資料
所以我的想法,大致上的一個流程是透過使用者者輸入的email做generate_token
加密簽名,收到後經由我們檢查驗證碼的APItoken_use.confirm_token
解密後,得到email,再從資料庫抓取「註冊時輸入」的信箱跟「驗證時輸入」的信箱相符合的使用者資料user = UserProfile.objects.get(email=email)
,最後user.is_active = True
對已驗證的使用者帳戶做一個活躍的標記,當然夥伴們你也可以拿email以外的東西作為驗證碼去加密簽名,取得之後比對是否符合。
我們明天要來設定這兩支API的url並且測試看看囉~~~