Contao-Camp 2024
Ergebnis 1 bis 12 von 12

Thema: postLogin und postLogout Problemchen

  1. #1
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.507
    User beschenken
    Wunschliste

    Standard postLogin und postLogout Problemchen

    Ab Contao 4.5 gibt es die tl_session Tabelle nicht mehr.
    Ich wollte das nun etwas vereinfacht nachbilden.

    Für postLogin habe ich mir den Cookie Hash geholt, hier am Beispiel Backend:
    Code:
           $session = \System::getContainer()->get('session');
           $strHash = sha1($session->getId().'BE_USER_AUTH');
    Über das User Object was mit der Hook übergibt hole ich mir die User ID und speichere die zusammen mit einem Timestamp und dem Hash ab.

    Problem kommt nun beim postLogout Hook.
    Denn hier wird vor dem Aufruf des Hooks bereits eine neue Session ID generiert.
    Demzufolge kann ich nun nicht passend den Eintrag in meiner Tabelle löschen über den Hash.
    Über den Hash gehe ich, da man sich ja mehrmals anmelden kann mit dem selben Login und die Logins unterscheiden muss.


    Ich hatte schon die Idee über den neuen "csrf_contao_csrf_token" Value zu gehen, interessanterweise bleibt der offenbar gleich wenn ich mich an-ab-anmelde.

    Jemand ne Idee für das Problemchen?
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  2. #2
    Contao Core-Team
    Association Vorstand
    Avatar von andreas.schempp
    Registriert seit
    15.06.2009.
    Ort
    Lyss
    Beiträge
    5.613
    Partner-ID
    8667
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Wäre es nicht viel einfacher du würdest dir einen Random Hash in die Session speichern? Die Session-Daten werden beim Logout ja beibehalten, entsprechend kannst du das selber behandeln.
    terminal42 gmbh
    Wir sind Contao Premium-Partner! Für Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.
    Hilfe für Isotope eCommerce kann man auch kaufen: Isotope Circle

  3. #3
    Contao Core-Team
    Association Vorstand
    Avatar von andreas.schempp
    Registriert seit
    15.06.2009.
    Ort
    Lyss
    Beiträge
    5.613
    Partner-ID
    8667
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Ausserdem, planst du eine Implementierung die nur in 4.5 funktioniert oder auch in älteren Versionen? Denn sonst solltest du nicht die veralteten Hooks benutzen (falls möglich). Es gibt sicher einen INTERACTIVE_LOGIN_EVENT, bei den restlichen bin ich mir nicht 100% sicher.
    terminal42 gmbh
    Wir sind Contao Premium-Partner! Für Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.
    Hilfe für Isotope eCommerce kann man auch kaufen: Isotope Circle

  4. #4
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.507
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von andreas.schempp Beitrag anzeigen
    Wäre es nicht viel einfacher du würdest dir einen Random Hash in die Session speichern? Die Session-Daten werden beim Logout ja beibehalten, entsprechend kannst du das selber behandeln.
    Das hatte ich mir auch schon überlegt, über diesen Weg zu gehen. Wie man in Contao 4 mit Session umgeht muss ich mir noch ansehen, da gibt es doch bestimmt auch was "neumodisches"


    Zitat Zitat von andreas.schempp Beitrag anzeigen
    Ausserdem, planst du eine Implementierung die nur in 4.5 funktioniert oder auch in älteren Versionen? Denn sonst solltest du nicht die veralteten Hooks benutzen (falls möglich). Es gibt sicher einen INTERACTIVE_LOGIN_EVENT, bei den restlichen bin ich mir nicht 100% sicher.
    Das soll ab Contao 4.5 funktionieren. Das die Hooks schon deprecated sind, habe ich schon gesehen. Als Hotfix würde ich erstmal dabei beiben.
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  5. #5
    Contao-Fan Avatar von Stranger
    Registriert seit
    20.06.2009.
    Ort
    Blankenburg
    Beiträge
    746
    Partner-ID
    5635
    User beschenken
    Wunschliste

    Standard

    Habe indirekt gerade mit dem gleichen Thema zu tun bei Contao 4.8.
    Es ist gewünscht, dass man beim Login Formular über jedem Feld sieht, ob es Loginversuch nicht ausgefüllt wurde.
    Also wenn das Passwort fehlt, soll über dem Passwort-Feld eine Fehlermeldung stehen. Wenn der Benutzername fehlt, soll über diesem Feld ebenfalls der Fehler stehen.

    Mir würde es auch schon helfen, wenn der Fehler im allgemeinen anders wäre...
    Diese Fehlermeldung "Anmeldung fehlgeschlagen (Benutzernamen und Passwörter unterscheiden zwischen Groß- und Kleinschreibung)!" ist leider nicht wirklich zielführend und genau.
    Ein anderer Usecase ist auch noch, dass der User sich ständig versucht einzuloggen, aber das geht nicht, weil er noch nicht aktiviert wurde. Das erfährt man an dieser Stelle überhaupt nicht.

    Vielleicht sagt ja jetzt auch der ein oder andere, dass das ein grundsätzliches Problem in Contao ist und eines Core Fixes bzw. einer Optimierung bedarf?! Dann müsste man wahrscheinlich bei Github ein Ticket aufmachen?
    Du willst dich bei mir bedanken?
    Ich freue mich über Geschenke von meiner Amazon-Wunschliste.

    Contao-Anwender seit 2008
    Contao-Entwickler seit 2013, mehr als 50 Contao Erweiterungen programmiert

    Mein Unternehmen aus Blankenburg (Harz): Fast & Media

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

    Standard

    Zitat Zitat von Stranger Beitrag anzeigen
    Es ist gewünscht, dass man beim Login Formular über jedem Feld sieht, ob es Loginversuch nicht ausgefüllt wurde.
    Das sollte im Template mit HTML Form Validation (https://developer.mozilla.org/en-US/...orm_validation) umsetzbar sein.


    Zitat Zitat von Stranger Beitrag anzeigen
    Mir würde es auch schon helfen, wenn der Fehler im allgemeinen anders wäre...
    Diese Fehlermeldung "Anmeldung fehlgeschlagen (Benutzernamen und Passwörter unterscheiden zwischen Groß- und Kleinschreibung)!" ist leider nicht wirklich zielführend und genau.
    dazu musst Du $GLOBALS['TL_LANG']['ERR']['invalidLogin'] in der languages/de/default.php überschreiben.
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  7. #7
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.050
    Partner-ID
    10107

    Standard

    Hm, ich denke du kannst in einem checkCredentials eine Exception mit genaueren Informationen werfen, sicher bin ich mir jedoch nicht. Die Möglichkeit die Fehlermeldung entweder beim Login Feld oder beim Passwort Feld anzeigen zu lassen gibt es von Haus aus nicht - könnte man aber mit Template Anpassung und parseTemplate Hook einbauen.

  8. #8
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.713
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von Stranger Beitrag anzeigen
    Ein anderer Usecase ist auch noch, dass der User sich ständig versucht einzuloggen, aber das geht nicht, weil er noch nicht aktiviert wurde. Das erfährt man an dieser Stelle überhaupt nicht.
    ja, das ist der berühmte "Zwischen Baum und Borke"-Status des Users... eine Info, dass die Bestätigung fehlt würde bedeuten, dass man preis gibt, das der Username existiert - das könnte sicherheitstechnisch nicht gewollt sein

  9. #9
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.713
    User beschenken
    Wunschliste

    Standard

    wahrscheinlich wäre es eine gute Option, nach Zeit x (drei Tage) die unbestätigten User nochmal daran zu erinnern, den Login zu bestätigen und nach Zeit y (eine Woche) diejenigen zu löschen - dann können die sich zumindest nochmal neu anmelden

    Edit: das Löschen nach 24h ist in der C4.9 schon an Bord

  10. #10
    Contao-Fan Avatar von Stranger
    Registriert seit
    20.06.2009.
    Ort
    Blankenburg
    Beiträge
    746
    Partner-ID
    5635
    User beschenken
    Wunschliste

    Standard

    Vielen Dank für die vielen Antworten!

    Zitat Zitat von fiedsch Beitrag anzeigen
    Das sollte im Template mit HTML Form Validation (https://developer.mozilla.org/en-US/...orm_validation) umsetzbar sein.

    dazu musst Du $GLOBALS['TL_LANG']['ERR']['invalidLogin'] in der languages/de/default.php überschreiben.
    1. Es ist leider novalidate im Formular gewünscht
    2. Das weiß ich doch, aber das nützt mir nix, weil Contao die Fehlermeldung allgemein hält und nicht unterscheidet, ob falsch, leer, nicht aktiviert etc.

    Zitat Zitat von Spooky Beitrag anzeigen
    Hm, ich denke du kannst in einem checkCredentials eine Exception mit genaueren Informationen werfen, sicher bin ich mir jedoch nicht. Die Möglichkeit die Fehlermeldung entweder beim Login Feld oder beim Passwort Feld anzeigen zu lassen gibt es von Haus aus nicht - könnte man aber mit Template Anpassung und parseTemplate Hook einbauen.
    Vielen Dank! Habs damit hinbekommen. Ich frage jetzt ab, ob das Passwortfeld ausgefüllt wurde und setze dann eine Session. Die Session greife ich dann im Template ab und kann nun die Fehlermeldung unterscheiden, ob das Passwort falsch ist oder ob es leer ist.

    Zitat Zitat von zonky Beitrag anzeigen
    ja, das ist der berühmte "Zwischen Baum und Borke"-Status des Users... eine Info, dass die Bestätigung fehlt würde bedeuten, dass man preis gibt, das der Username existiert - das könnte sicherheitstechnisch nicht gewollt sein
    Das habe ich denen ja auch gesagt, aber bleiben wir mal realistisch.
    1. Zum einen ist es so, dass du bei der Telekom und diversen anderen Seiten auch eine Fehlermeldung gekommst, dass dieser User nicht existiert.
    2. Du wirst sowieso gesperrt, wenn du 3 mal das falsche Passwort eingibst.
    3. Wenn du bei Contao das "Passwort vergessen" Modul einsetzt und eine Mail-Adresse eingibst, die nicht existiert, dann erhältst du die Fehlermeldung "Kein passendes Konto gefunden" - wenn du also das Sicherheitsargument anführst, dann müsste dieses Modul ja auch "zurückgebaut" werden
    4. Es ist katastrophal, wenn du als User nicht weißt erfährst, dass du dich noch nicht einloggen kannst, weil dein Account noch nicht freigeschaltet wurde. Der User denkt dann, dass sein Konto gar nicht existiert und registriert sich womöglich noch 1 bis 5 mal.

    Zitat Zitat von zonky Beitrag anzeigen
    wahrscheinlich wäre es eine gute Option, nach Zeit x (drei Tage) die unbestätigten User nochmal daran zu erinnern, den Login zu bestätigen und nach Zeit y (eine Woche) diejenigen zu löschen - dann können die sich zumindest nochmal neu anmelden
    Es geht nicht um den User. Der User hat seinen Login bereits bestätigt. Der Admin muss den User freischalten, da es eine "moderierte" Registrierung ist. Der User erfährt ja nicht wann er freigeschaltet wurde. Abgesehen davon brauchst du bei Contao 4.9 niemanden mehr nach 3 Tagen erinnern, da User, die sich nicht selbst nach 24 Stunden bestätigt haben automatisch gelöscht werden
    Du willst dich bei mir bedanken?
    Ich freue mich über Geschenke von meiner Amazon-Wunschliste.

    Contao-Anwender seit 2008
    Contao-Entwickler seit 2013, mehr als 50 Contao Erweiterungen programmiert

    Mein Unternehmen aus Blankenburg (Harz): Fast & Media

  11. #11
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.713
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von Stranger Beitrag anzeigen
    3. Wenn du bei Contao das "Passwort vergessen" Modul einsetzt und eine Mail-Adresse eingibst, die nicht existiert, dann erhältst du die Fehlermeldung "Kein passendes Konto gefunden" - wenn du also das Sicherheitsargument anführst, dann müsste dieses Modul ja auch "zurückgebaut" werden
    => korrekt!

  12. #12
    Contao-Nutzer
    Registriert seit
    18.12.2010.
    Ort
    Mühltal
    Beiträge
    42

    Standard Trotz aktivem Mitglied "Keinpassendes Konto gefunden"

    Ich habe aktuell bei einer 4.9. Installation das Problem, dass Mitglieder ihr Kennwort nicht zurücksetzen können, weil nach Eingabe der Mail-Adresse immer die Information kommt " Kein passendes Konto gefunden" obwohl das Konto aktiv ist und die angegebene Adresse stimmt.

    Das Problem konnte ich lösen indem ich das Feld Session bei allen Mitgliedern gelöscht habe.
    Geändert von diversworld (18.12.2020 um 12:29 Uhr)

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
  •