Wie kann activate_url auf django-allauth angepasst werden?

8

Ich benutze Django mit Django REST Framework als Backend und AngularJS am Frontend.

Für die Benutzerverwaltung verwende ich django-rest-auth , das django verwendet -Allauth für die Benutzerverwaltung. Als Basis habe ich Demo von django-rest-auth benutzt.

Das Problem ist nach der Anmeldung, wenn Sie versuchen, die E-Mail zu überprüfen, sendet es E-Mail mit Aktivierungs-URL: 127.0.0.1:8000/account/confirm-email/yhca8kmijle0ia7k3p7ztbvnd2n1xepn9kyeuaycmlzll5xw19ubjarnvjrot7eu/

wobei * 127.0.0.1:8000 das Django-Backend ist.

Aber in meinem Fall sollte es URL wie localhost:9000/#/verifyEmail/akv2dcvrfnk9ex5fho9jk0xx1ggtpfazmi8sfsoi2sbscoezywfp7kzcyqnizrc0 senden. Damit diese Überprüfung vom Frontend aus erfolgt, ist localhost:9000 mein AngularJS-Frontend.

Gibt es eine Möglichkeit, activate_url auf django-allauth anzupassen?

    
mipasov 16.01.2015, 13:21
quelle

2 Antworten

4

Ich habe es geschafft, die Aktivierung vom Frontend aus vorzunehmen, indem ich die Klasse DefaultAccountAdapter überschreibe und die Methode send_mail überschreibe, wie im django-allauth doc:

spezifiziert
  

Wenn dies Ihren Anforderungen nicht entspricht, können Sie Ihren eigenen benutzerdefinierten Mechanismus anschließen, indem Sie die Methode send_mail des Kontoadapters (allauth.account.adapter.DefaultAccountAdapter) überschreiben.

Ich habe zuerst die Back-End-URL geschrieben, mit der ich eine E-Mail bestätige:

%Vor%

Ich habe dann den benutzerdefinierten Adapter und die Front-End-URL in settings.py wie folgt angegeben:

%Vor%

Und schrieb dies in der adapter.py von meiner App:

%Vor%

Die in der E-Mail gesendete Aktivierungs-URL sieht nun wie folgt aus: http://127.0.0.1:9000/verify-email/<key>/

Ich habe die activate_url in die URL_FRONT Zeichenfolge, die ich in settings.py angegeben habe, geändert und den Schlüssel angehängt, um eine Anfrage vom Frontend an die zuvor geschriebene URL zu stellen (sagen wir http://localhost:8000/verify-email/<key> ). (Zuvor ACCOUNT_CONFIRM_EMAIL_ON_GET auf True setzen, um eine E-Mail nur durch eine get-Anfrage zu bestätigen)

    
Storm 13.12.2015 08:35
quelle
2

Konnte keine Dokumente finden, die dies spezifizieren (sicher, dass sie irgendwo da draußen sein müssen), aber schauen Sie sich github machen sie nur eine URL-Umkehrung in "account_confirm_email"

Sie müssen lediglich ein URL-Muster mit dem name="account_confirm_email" -Param nach ihrem hinzufügen, so:

%Vor%

Das Problem dabei ist, dass Sie jetzt direkt die Abhängigkeit einer Abhängigkeit ansprechen. Wenn eine neuere Version von django-restauth dies nicht verwendet, könnte es bei dir kaputt gehen.

Wenn Sie bereit sind, andere Bibliotheken zu verwenden, verwende ich derzeit djoser mit DRF und habe es ziemlich einfach gefunden. Vielleicht entspricht es Ihren Bedürfnissen.

    
Tom Manterfield 23.06.2015 20:58
quelle