簡體   English   中英

Django Rest Framework + Django-Allauth密碼重置/恢復

[英]Django Rest Framework + Django-Allauth Password Reset/Recovery

我正在嘗試使用Django Rest Framework和Django-Allauth創建密碼恢復流程。

Django-Allauth已經完成了我需要的一切,我的問題是我可以編程調用django-allauth函數或從DRF查看接收我想要重置的電子郵件並繼續其余正常的allauth流程(如創建臨時令牌和將電子郵件發送給客戶端?

如果其中一個應用程序正在執行我需要的任何操作,我就不會重寫所有代碼。 只需要一些關於如何“粘合”它們的幫助:)

萬一它有幫助,只需創建一個新類來覆蓋密碼序列化器,解決了這個問題。

from rest_auth.serializers import PasswordResetSerializer
from allauth.account.forms import ResetPasswordForm

class PasswordSerializer (PasswordResetSerializer):
    password_reset_form_class = ResetPasswordForm

然后確保將其添加到您的設置:

REST_AUTH_SERIALIZERS = {
    'PASSWORD_RESET_SERIALIZER': 'api.helpers.pwdreset.PasswordSerializer',
}

我想到了

我將此添加到我的DRF資源中

@list_route(
    methods=['post'], permission_classes=[AllowAny],
    authentication_classes=[NoAuthentication]
)
def recover_password(self, request):
    if request.DATA.get('email'):
        # Lets be smart and reuse django-allauth password recovery system
        form = ResetPasswordForm({'email': request.DATA.get('email')})
        if form.is_valid():
            form.save()
            return Response(status=200)
    return Response(status=400)

暫無
暫無

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

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