Typo3 felogin Passwort vergessen funktioniert nicht – Checkliste – Mail wird nicht versendet

Mittwoch, 21. Mai 2014

Checkliste möglicher Gründe, warum die “Passwort vergessen”-Funktion des felogin nicht funktioniert. Nach einigen Stunden Suche hatten wir als Fehler eingegrenzt, dass in der typo3/sysext/felogin/pi1/class.tx_felogin_pi1.php in Zeile 184 die Abfrage bei

if ($postedHash === $hashData['forgot_hash']) {

immer “false” ergab, weil offensichtlich der hash-Wert des Formulars im Marker ###FORGOTHASH### nicht mit dem aktuellen Wert in $GLOBALS['TSFE']->fe_user->getKey(‘ses’, ‘forgot_hash’); übereinstimmte.

class.tslib_feuserauth.php hatte offensichtlich einen neuen Hash generiert, bevor der alte korrekt ausgewertet wurde. Die Lösung des Problems: Das Login-Formular und das “Passwort vergessen” Formular befanden sich auf ein und der selben Seite (bzw. wurde per AJAX nachgeladen). Da beide Formulare einen neuen, eindeutigen Hash-Wert berechnen, ersetzte das zweite Formular in den Session-Variablen den Hash-Wert des ersten Formulars. Folglich waren Session-Hash-Wert und per POST übermittelter Hash-Kontrollwert nie identisch.

1. Gibt es zwei felogin-Formulare auf der gleichen Seite?

Zum Beispiel ein Login-Formular an einer Stelle und zeitgleich das “Passwort vergessen”-Formular an einer anderen Stelle? Falls ja: Für eines entscheiden. Problem wie oben beschrieben…

2. Wird der Hash-Wert im Formular übergeben?

Diese Änderung betrifft vor allem Updates von älteren Typo3-Versionen: In dem Template für das “Passwort vergessen”-Formular muss zwingend der Hash-Wert mit übergeben werden, z.B. so:

<input type="hidden" name="tx_felogin_pi1[forgot_hash]" value="###FORGOTHASH###" />

Für Suchmaschinen:

“typo3 frontend login passwort vergessen”, feuserauth storeSessionData fails to save Data to DB in “ses”-mode, feuser session data not saved, felogin probleme setKey() getKey Typo3, felogin feuser fe_user fe_login session data nicht gespeichert, fe_user passwort reset schickt keine Mails, Mail wird nicht versendet bei Passwort vergessen.