Django: Groß- / Kleinschreibung bei der Übereinstimmung von Benutzername und authem Benutzer?

8
___ answer13207785 ___

Endlich verstanden:

Mit so viel experimentierfreudigem und minimalem Effekt auf Authentication Backend -Modell, endlich erreicht. [Danke an Mr. @freakish für einen anderen Gedanken]

Hier ist es:

%Vor%

Ich habe es getestet und es hat wie erwartet funktioniert. : D

Also, hier sind die Testfälle :

%Vor% Implizite Groß- / Kleinschreibung-unabhängige Abfragen für die Datenbank %Vor%

Dies ermöglicht username & amp; yugal ergibt denselben Benutzer.

    
___ answer33456271 ___

Ab Django 1.5 ist es einfach, Benutzernamen unkritisch zu machen:

%Vor%

Quellen: 1 , 2

    
___ qstnhdr ___ Django: Groß- / Kleinschreibung bei der Übereinstimmung von Benutzername und authem Benutzer? ___ answer13198755 ___

Dieses Affenflicken sieht nach einer schlechten Idee aus. Sie werden in Zukunft definitiv einige Probleme (Django macht eine Menge Sachen hinter der Szene) treffen. Ich empfehle dringend, Ihre App neu zu gestalten.

Allerdings können Sie Folgendes versuchen (indem Sie Ihre True -Klasse verwenden):

%Vor%

Nun, ich bin nicht 100%, dass das funktionieren wird, und es ist ein bisschen hacky, also benutze es mit Vorsicht. :)

    
___ tag123python ___ Python ist eine dynamische und stark typisierte Programmiersprache, die die Usability betont. Zwei ähnliche, aber größtenteils inkompatible Versionen von Python sind weit verbreitet (2 und 3). Wenn Sie eine versionsspezifische Python-Frage haben, sollten Sie die Tags [python-2.7] oder [python-3.x] zusätzlich zum Tag [python] verwenden. Wenn Sie eine Python-Variante wie jython, pypy, iron-python usw. verwenden, kennzeichnen Sie diese bitte entsprechend. ___ answer18731796 ___

Es gibt einen relativ sauberen Weg, dies zu tun:

%Vor%

Dann stellen Sie

ein %Vor%

Sie müssen Nutzernamen in Ihrem Registrierungsarbeitsablauf auch in Kleinbuchstaben erzwingen

Dies funktioniert alles in Ordnung, behält jedoch den vom Benutzer angegebenen Fall nicht bei und ist auch nicht effizient in der Datenbank nachzuschlagen. Das Standard-Django-Verhalten ist von Entwurf, siehe Ссылка

    
___ tag123operatoroverloading ___ Operatorüberladung ist eine Funktion einer Programmiersprache, die benutzerdefinierte Implementierungen für Operatoren abhängig von den Typen der beteiligten Operanden ermöglicht. Einige Sprachen erlauben die Definition neuer Operatoren, während andere nur die Neudefinition bestehender Operatoren erlauben. ___ tag123django ___ Django ist ein serverseitiges Open-Source-Webanwendungs-Framework, das in Python geschrieben wurde. Es wurde entwickelt, um den Aufwand für die Erstellung komplexer datengesteuerter Websites und Webanwendungen zu reduzieren, mit besonderem Fokus auf weniger Code, keine Redundanz und expliziter als implizit. ___ answer28279397 ___

Der einfachste Weg, den Benutzernamen ohne Berücksichtigung der Groß- / Kleinschreibung zu verwenden, besteht darin, den Standardwert C++ zu übernehmen und Operator Overloading method zu überschreiben.

Bitte beachten Sie, dass wir innerhalb des auth user Blocks auth user ausführen, indem wir die Arbeitszeit verringern. Fehlerbericht behoben

%Vor%

Fügen Sie dieses Backend zu django in settings.py

hinzu %Vor%     
___ answer28658690 ___

Ich habe einige Zeilen in meinem Registrierungs- und Login-Prozess geändert, die für mich zu funktionieren scheinen. Mit meiner Lösung werden die Benutzernamen immer noch angezeigt, so wie der Benutzer sie bei der Registrierung geschrieben hat, aber es wird anderen nicht erlauben, denselben Benutzernamen anders zu verwenden. Es ermöglicht Benutzern auch, sich anzumelden, ohne sich Gedanken darüber machen zu müssen, den Benutzernamen für Groß- und Kleinschreibung zu schreiben.

Ich habe das Registrierungsformular geändert, um nach Groß- und Kleinschreibung zu suchen.

Dies ist eine Zeile von meiner Validierung des Benutzernamens, es sucht nach Benutzer mit diesem Benutzernamen.

%Vor%

Dann musste ich Benutzern erlauben, sich mit Benutzernamen ohne Berücksichtigung der Groß- / Kleinschreibung anzumelden.

Aus meiner Login-Ansicht:

%Vor%     
___
Yugal Jindle 02.11.2012, 07:01
quelle

6 Antworten

4

Endlich verstanden:

Mit so viel experimentierfreudigem und minimalem Effekt auf User -Modell, endlich erreicht. [Danke an Mr. @freakish für einen anderen Gedanken]

Hier ist es:

%Vor%

Ich habe es getestet und es hat wie erwartet funktioniert. : D

Also, hier sind die Testfälle :

%Vor% Implizite Groß- / Kleinschreibung-unabhängige Abfragen für die Datenbank %Vor%

Dies ermöglicht User.objects.get(username='yugal') & amp; User.objects.get(username='YUGAl') ergibt denselben Benutzer.

    
Yugal Jindle 03.11.2012, 09:21
quelle
22

Ab Django 1.5 ist es einfach, Benutzernamen unkritisch zu machen:

%Vor%

Quellen: 1 , 2

    
Josh Kelley 31.10.2015 20:29
quelle
5

Ich habe einige Zeilen in meinem Registrierungs- und Login-Prozess geändert, die für mich zu funktionieren scheinen. Mit meiner Lösung werden die Benutzernamen immer noch angezeigt, so wie der Benutzer sie bei der Registrierung geschrieben hat, aber es wird anderen nicht erlauben, denselben Benutzernamen anders zu verwenden. Es ermöglicht Benutzern auch, sich anzumelden, ohne sich Gedanken darüber machen zu müssen, den Benutzernamen für Groß- und Kleinschreibung zu schreiben.

Ich habe das Registrierungsformular geändert, um nach Groß- und Kleinschreibung zu suchen.

Dies ist eine Zeile von meiner Validierung des Benutzernamens, es sucht nach Benutzer mit diesem Benutzernamen.

%Vor%

Dann musste ich Benutzern erlauben, sich mit Benutzernamen ohne Berücksichtigung der Groß- / Kleinschreibung anzumelden.

Aus meiner Login-Ansicht:

%Vor%     
Mazvél 22.02.2015 14:03
quelle
0

Dieses Affenflicken sieht nach einer schlechten Idee aus. Sie werden in Zukunft definitiv einige Probleme (Django macht eine Menge Sachen hinter der Szene) treffen. Ich empfehle dringend, Ihre App neu zu gestalten.

Allerdings können Sie Folgendes versuchen (indem Sie Ihre iUnicode -Klasse verwenden):

%Vor%

Nun, ich bin nicht 100%, dass das funktionieren wird, und es ist ein bisschen hacky, also benutze es mit Vorsicht. :)

    
freakish 02.11.2012 15:55
quelle
0

Es gibt einen relativ sauberen Weg, dies zu tun:

%Vor%

Dann stellen Sie

ein %Vor%

Sie müssen Nutzernamen in Ihrem Registrierungsarbeitsablauf auch in Kleinbuchstaben erzwingen

Dies funktioniert alles in Ordnung, behält jedoch den vom Benutzer angegebenen Fall nicht bei und ist auch nicht effizient in der Datenbank nachzuschlagen. Das Standard-Django-Verhalten ist von Entwurf, siehe Ссылка

    
Bryce 11.09.2013 02:39
quelle
0

Der einfachste Weg, den Benutzernamen ohne Berücksichtigung der Groß- / Kleinschreibung zu verwenden, besteht darin, den Standardwert ModelBackend zu übernehmen und authenticate method zu überschreiben.

Bitte beachten Sie, dass wir innerhalb des except Blocks UserModel().set_password(password) ausführen, indem wir die Arbeitszeit verringern. Fehlerbericht behoben

%Vor%

Fügen Sie dieses Backend zu AUTHENTICATION_BACKENDS in settings.py

hinzu %Vor%     
Mr.Coffee 02.02.2015 13:59
quelle