簡體   English   中英

Drf令牌認證密碼重置

[英]Drf token authentication password reset

我想知道 Django rest 框架令牌身份驗證是否具有密碼重置屬性。 我有一個 Django 應用程序,我在其中使用令牌身份驗證來注冊和登錄用戶。 但有人告訴我,為了讓我在 Django 應用程序中實現密碼重置,我必須切換到 JWT 或 Knox 等軟件包。 但我想使用 drf 令牌身份驗證而不切換到 jwt 或類似的 package。 我應該如何 go 關於這個,可能嗎?

您可以使用Djoser ,或創建一個端點,該端點可以將 email 發送給包含帶有令牌和 uid 的鏈接的用戶,以及另一個接收 uid 和令牌並重置密碼的端點。

 @api_view(["GET"]) def send_resetpassword_email(request, email): user = User.objects.get(email=email) if user.is_active == True: current_site = get_current_site(request) subject = "Please Reset your password" message = render_to_string( "reset_password_email.html", { "user": user, "domain": current_site.domain, "uid": urlsafe_base64_encode(force_bytes(user.pk)), "token": account_activation_token.make_token(user), }, ) user.email_user(subject, message) return Response( {"message": "Reset Password Email Sent"}, status=status.HTTP_201_CREATED ) return Response( {"message": "user is not active"}, status=status.HTTP_400_BAD_REQUEST ) class ResetPassword(APIView): serializer_class = ResetPasswordSerializer def put(self, request, uidb64, token): try: uid = force_text(urlsafe_base64_decode(uidb64)) user = User.objects.get(pk=uid) except (TypeError, ValueError, OverflowError, User.DoesNotExist): user = None if user is not None and account_activation_token.check_token(user, token): serializer = self.serializer_class(data=request.data) if serializer.is_valid(): user.set_password(request.data.get("password")) user.save() return Response( {"message": "Password Reset Successfull"}, status=status.HTTP_200_OK ) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) else: return Response( {"message": "Password Reset Failed"}, status=status.HTTP_400_BAD_REQUEST )

所以你必須創建一個重置密碼序列化程序

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM