Erstens geht es hier nicht um die Frage, wie man sich mit einem E-Mail/Passwort-Paar authentifizieren kann, sondern vielmehr darum, wie man eine logische und, wenn Sie so wollen, schöne Datenstruktur erzeugt.
Ich möchte E-Mails als Benutzernamen in einem bestimmten Django-Projekt zu verwenden. Allerdings bin ich nicht in der Lage, Felder wiederverwenden, die von auth.User Modell aus mindestens zwei Gründen:
-
Das Feld max_length von auth.User.username hat eine Länge von 30 Zeichen, was für einige E-Mail-Adressen möglicherweise nicht ausreicht.
-
auth.User.email ist nicht eindeutig - das ist offensichtlich nicht zufriedenstellend für eine Voraussetzung, die besagt, dass Benutzernamen eindeutig sein müssen.
Ein naheliegender Weg ist hier also, den Benutzernamen in einem benutzerdefinierten Profil zu speichern, das mit auth.User verknüpft ist. In diesem Fall müssen wir mit folgenden Problemen umgehen:
- Eindeutigen Benutzernamen für auth.User.username generieren - md5-Hash der E-Mail sollte hier ausreichen?
- Lassen Sie auth.User.email komplett leer - da es nur 75 Zeichen lang ist, während laut RFC 5321 ( Wie lang darf eine gültige E-Mail-Adresse maximal sein? ) E-Mail kann bis zu 256 Zeichen lang sein.
Die folgende Problematik ergibt sich aus der vorgeschlagenen Lösung:
- Es ist nicht möglich, integrierte Ansichten/Vorlagen für Standardvorgänge wie das Zurücksetzen von Passwörtern usw. wiederzuverwenden.
- Im Falle einer E-Mail-Änderung muss auth.User.username aktualisiert werden
Um noch Öl ins Feuer zu gießen, ist es unwahrscheinlich, dass die Django-Entwickler diese Einschränkung in absehbarer Zeit beheben werden - siehe http://code.djangoproject.com/ticket/11365
Die Frage ist also: Gibt es eine andere Möglichkeit, dies zu tun, und sehen Sie irgendwelche anderen Nachteile in der oben vorgeschlagenen Lösung?
Merci !