Danke für ein interessantes Contao Camp am 03. & 04. November 2018 & Contao College am 02. November 2018 im Basislager Leipzig, Deutschland
Ergebnis 1 bis 5 von 5

Thema: Username case insensitive beim Registieren / Login

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

    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
    75

    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
    1.930

    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.
    Stammtisch Contao Bayern: http://www.contao-bayern.de

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

    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-Nutzer Avatar von Flaschenzug
    Registriert seit
    08.07.2010.
    Ort
    Berlin
    Beiträge
    239

    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.

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
  •