iT邦幫忙

2021 iThome 鐵人賽

DAY 23
0
Modern Web

暑假旅程之自學Django系列 第 23

[Day23] 信箱驗證API – views

  • 分享至 

  • xImage
  •  

昨天我們介紹了如何發送驗證信,今天我們要來寫信箱驗證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

這邊說明一下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並且測試看看囉~~~


上一篇
[Day22] 發送驗證信API – views
下一篇
[Day24] 發送驗證信API、信箱驗證API – urls、測試階段
系列文
暑假旅程之自學Django30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言