繁体   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