哈囉大家好,今天要做的是重設密碼API,先附上我的程式碼~~
@csrf_protect
def reset(request): #重設密碼
if request.method == "POST":
try:
data = json.loads(bytes.decode(request.body,"utf-8"))
old_pw = data['old_password']
if request.user.is_authenticated is True and request.user.check_password(old_pw) is True:
id = request.user.id
user = UserProfile.objects.get(id = id)
new_pw = data['password']
user.set_password(new_pw)
user.save()
message = {"status":"0"}
else:
message = {"status":"1"}
except Exception as e:
print(e)
message = {"status":"1"}
return JsonResponse(message)
這邊說說我的想法,因為重設密碼的選項,通常是帳號登入之後,所以這邊我首先是判斷帳號是否為已驗證,再來是再檢查密碼一次if request.user.is_authenticated is True and request.user.check_password(old_pw) is True:
,如果已驗證那代表已登入,舊密碼也再次確認過了,這時候因為是登入的狀態,所以我們可以用request.user.id
這樣的方式查詢使用者的id,我拿著目前登入使用者的id,去後台查詢、比對,找目前登入使用者在後台的資料user = UserProfile.objects.get(id = id)
,然後重新設定密碼user.set_password(new_pw)
,並儲存user.save()
,大致上的是這樣~~~ 。
我們在views寫完邏輯,老樣子,相信你一定知道明天要幹嘛了,那麼我們就明天見啦~~ ㄅㄅ