Contao-Camp 2024
Ergebnis 1 bis 9 von 9

Thema: Username case insensitive beim Registieren / Login

  1. #1
    Contao-Nutzer
    Registriert seit
    11.09.2016.
    Beiträge
    79

    Standard Username case insensitive beim Registieren / Login

    Hallo zusammen,

    ich habe eine kurze Frage zum Thema Benutzernamen und dem Registrieren (Contao 3.5).
    Benutzername und Kennwort sind ja case-sensitive, es wird also Groß- und Kleinschreibung berücksichtigt.
    Wäre es denkbar bzw. unter Aspekten der Sicherheit unbedenklich, beim Benutzernamen diese Überprüfung zu deaktivieren?

    Im Moment kann es ja z.B. einen Benutzer willi123 und einen Benutzer Willi123 geben. Ich würde es gerne so umbauen, dass es nur einen Benutzer willi123 geben kann und dass es bei diesem egal ist, ob er sich mit willi123 oder Willi123 anmeldet. Das Passwort bzw. die Logik hierfür bleibt natürlich unberührt.

    Es geht mir nicht um die technische Umsetzung des Ganzen, sondern darum, ob ich hier einen Denkfehler habe und evtl. Probleme bekommen würde, an die ich im Moment nicht denke.

    Danke und viele Grüße

  2. #2
    Contao-Nutzer
    Registriert seit
    11.09.2016.
    Beiträge
    79

    Standard

    Nachtrag: Ich habe es jetzt testweise mal umgesetzt. Ich habe mir den importUser Hook geschnappt, welcher ausgelöst wird, wenn ein Benutzer beim Login nicht gefunden wird (Benutzer nicht vorhanden oder Benutzername falsch eingegeben) und versuche den Benutzernamen case-insensitive (Groß-/ Kleinschreibung ignorieren) zu finden.
    Um sicher zu gehen, dass Benutzernamen mit dieser Schreibweise einzigartig sind, habe ich das Feld username in der Tabelle tl_member von utf8_bin auf utf8_general_ci umgestellt (case-sensitive vs case-insensitive).

    Der Test funktioniert auch. Existiert Benutzer Willi123, kann man sich nicht mehr mit willi123 registrieren. Eine Anmeldung ist jedoch mit beiden Varianten möglich.
    Sollte sich jemand für die Details der Umsetzung interessieren, weil er vielleicht das Selbe umsetzen möchte, gerne kurz Bescheid geben.

    Sollte jemand einen Punkt kennen, an dem es durch diese Anpassung zu Problemen an anderer Stelle in Contao kommen sollte, wäre ich auch für diesen Hinweis sehr dankbar.

  3. #3
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.935

    Standard

    Ich würde sagen, der Weg über den Hook ist zu umständlich:

    Die ursprüngliche Definition des Felds 'username' der Tabelle tl_member ist so:

    PHP-Code:
    $GLOBALS['TL_DCA']['tl_member']['fields']['username']['sql'] = "varchar(64) COLLATE utf8_bin NULL"
    und "berücksichtigt" wegen COLLATE utf8_bin die Unterscheide zw. Groß- und Kleinschreibung.

    Wenn Du das (in einer eigene Erweiterung oder der zentralen dcaconfig.php) so abänderst:

    PHP-Code:
    $GLOBALS['TL_DCA']['tl_member']['fields']['username']['sql'] = "varchar(64) COLLATE utf8_general_ci NULL"
    und danach die Datenbank aktualisierst sollte alles erledigt sein. Nebewirkungen sind mir keine bekannt.
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  4. #4
    Contao-Nutzer
    Registriert seit
    11.09.2016.
    Beiträge
    79

    Standard

    Stimmt, du hast recht.
    Der Hook würde in diesem Szenario auch gar nicht zum Tragen kommen, da der Benutzername (sofern nicht völlig falsch geschrieben) ja auch gefunden wird.
    Die Anpassung der tl_member sieht bei mir auch genau so aus.

    Vielen Dank für den Hinweis!

  5. #5
    Contao-Fan Avatar von Flaschenzug
    Registriert seit
    08.07.2010.
    Ort
    Berlin
    Beiträge
    312

    Standard

    Ihr behandelt genau das Thema, das für mich relevant ist. Vielen Dank dafür..
    Allerdings habe ich noch das Plugin "mailusername" am Laufen damit man sich via E-Mail Adresse einloggt und nicht per Username.
    Dabei habe ich genau das gleiche Problem mit der Groß- und Kleinschreibung.

    Falls jemand das gleiche mal braucht:
    Einfach in die
    /modules/mailusername/dca/tl_member.php
    die folgende Zeile von euch oben einfügen
    Code:
    $GLOBALS['TL_DCA']['tl_member']['fields']['username']['sql'] = "varchar(64) COLLATE utf8_general_ci NULL";
    Dann URL/contao/main.php?do=repository_manager&update=database aufrufen und das Datenbank Update durchführen.
    Und schon läuft der Login mit case insensitivem Userlogin problemlos.

  6. #6
    Contao-Nutzer Avatar von TLight
    Registriert seit
    30.06.2009.
    Ort
    bei München
    Beiträge
    168

    Standard

    Zitat Zitat von fiedsch Beitrag anzeigen
    PHP-Code:
    $GLOBALS['TL_DCA']['tl_member']['fields']['username']['sql'] = "varchar(64) COLLATE utf8_bin NULL"
    Klingt wie eine super Lösung für mein Problem, aber wo ändere ich das in Contao 4? Ich habe die Zeile in /contao/dca/tl_member.php geschrieben, wo ich schon Felder auf mandatory gesetzt habe, aber im Install-Tool erscheint nur "Die Datenbank ist aktuell."

  7. #7
    AG Pressearbeit
    Community-Moderator
    Buchautor 'Contao für Webdesigner'
    Avatar von planepix
    Registriert seit
    05.06.2009.
    Ort
    Stuttgart
    Beiträge
    6.464
    Partner-ID
    107
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Ist der ProdCache nach dem Ändern der Datei schon gelöscht worden?
    Gehts danach?
    ---------------------------------
    Beste Grüße planepix
    Contao für Webdesigner (Website), Twitter: @contaowebdesign
    weitzeldesign
    Contao-Sprechstunde
    Contao Schulungen: https://www.weitzeldesign.com/cms-co...chulungen.html
    Contao Jahrbuch: www.contao-jahrbuch.de
    Contao Agenturtag: www.contao-agenturtag.de
    Contao Stammtisch Stuttgart: www.contao-stammtisch-stuttgart.de
    Contao 4 Erfahrungen als Gitbook: https://app.gitbook.com/@planepix/s/...-mit-contao-4/
    Contao 4 & Manager Hosterhinweise: https://github.com/contao/contao-manager/wiki

    Schon wieder ein Update?
    Glücklich sind die, die den Wert erkennen – und wertschätzen.
    „Muss man machen wie beim Zahnarzt. Der bestraft einen auch mit hohen Rechnungen wenn man die Pflege vernachlässigt.”

  8. #8
    Contao-Nutzer Avatar von TLight
    Registriert seit
    30.06.2009.
    Ort
    bei München
    Beiträge
    168

    Standard

    Zitat Zitat von planepix Beitrag anzeigen
    Ist der ProdCache nach dem Ändern der Datei schon gelöscht worden?
    Gehts danach?
    Super! Das war's! Danke!!

  9. #9

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •