Zum Inhalt springen

newloginbox: bestimmte User können sich nicht einloggen

Erstellt am 2. Februar 2009 · 4 Antworten · letzte Antwort am 12. Februar 2009

Tags: felogin, Frontend-Benutzer, Frage

rawburner ·

Hallo Leute!

Ich bin verzweifelt! Wie der Titel schon sagt können sich bestimmte FE-User nicht einloggen.

Meine Testkonten loggen sich sofort ohne Probs ein, aber andere, neuere Benutzer bekommen immer eine Fehlermeldung.
Im phpMyAdmin habe die die User miteinader verglichen: pid, usergroup, deleted usw. ist alles richtig gesetzt. Wenn ich bei einem anderen User, der das Problem hat, das Passwort oder Benutzernamen neu setze, dann geht es immer noch nicht.
Ich habe die Daten in der Datenbank versucht zu analysieren, aber mir fallen einfach keine verdächtigen Werte auf.

Habt ihr eine Idee? Ich bin mit meinem Latein am Ende!

Danke!

kolki ·

Eigenartig.
Die unterschiedlichen FE-User befinden sich auch allesamt auf der gleichen Page?
Gibt es vielleicht Unterschiedlichkeiten in der Passwortverschlüsselung etc.?

rawburner ·

Ja die befinden sich alle in der pid=29.

Ich habe wieder zwei neue User, die sich nicht einloggen können. Wenn ich in der DB das Passwortfeld oder den Benutzernamen (um Umlaute und ähnliches auszuschließen) neu setze geht es immer noch nicht.
Das Passwortfeld ist immer md5.

Was kann das bloß sein? Gibt es eine Fehlermeldung, die ich sichtbar machen kann?

rawburner ·

Nun habe ich Stundenlang im Core von Typo3 gedebuggt und letzten Endes festgestellt, dass es ein UTF-8 Problem ist. Folglich bin ich auf diesen Post gestoßen:
#70355

Aber bei mir muss die Änderung auch noch in t3lib/class.t3lib_userauth.php gemacht werden:

$dbres = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
						'*',
						$dbUser['table'],
							utf8_decode($usernameClause).
							$dbUser['check_pid_clause'].
							$dbUser['enable_clause'].
							$extraWhere
					);

			if ($dbres)	{
				$user = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($dbres);
				
				$GLOBALS['TYPO3_DB']->sql_free_result($dbres);
			}

Da kommt "utf_decode" rein damit es geht.

Ferner musste ich den Patch aus dem genannten Post ebenfalls modifizieren, damit es endlich geht:

$this->login['uident'] = md5($this->login['uident']);
			
			$OK = FALSE;
			
            if( $this->login['uident'] == $user['password']){
                $OK = 100;
            }

forceCharset ist bei mir nicht eingestellt, allerdings läuft die Seite auf UTF-8.

Diese Kombi von Workarounds hat mir nach 8 Stunden die Lösung gebracht #angry#

rawburner ·

Und weiter gehts!

Mit dem Workaround von oben konnten sich zwar bereits vorhandenen User einloggen, aber neu registrierte nicht, weil der md5-Hash plötzlich nicht stimmte. Damit das auch noch klappt, musste ich die Extension sr_feuser_register anpassen:
Datei class.tx_srfeuserregister.data.php Zeile um die 896

if ($cmdKey == 'invite' && $this->controlData->getUseMd5Password()) {
	// MD5-Workaround
	$parsedArray['password'] = md5($dataArray['password']);
}
$parsedArray['password'] = md5($dataArray['password']);

Da ich den Javascript MD5-hasher abgeschaltet habe, muss es hier nachgeholt werden.

Nachdem nun das FE-Login einwandfrei läuft, kann ich mich nicht mehr im BE anmelden, und zwar unabhängig von irgendwelchen Umlauten. Auch hier musste ich im Core eingreifen:

Datei typo3/sysext/sv/class.tx_sv_auth.php Funktion authUser, die bei meiner Extension-Konstellation nur beim BE-Login greift:

$pass=explode(":",$this->login['uident']);
$pass = md5($pass[1]);
$OK = FALSE;
if( $pass == $user['password']){
   $OK = 200;
}

Es geht nur, wenn OK=200 und nicht 100 ist. Dann wird man direkt authentiziert.

Ich weiß echt nicht, ob ich in meiner Installation was unnormales gemacht habe. Die Seite läuft im UTF-8-Modus, das BE allerdings im 8859-1. Vielleicht habe ich auch irgendwo am Anfang Mist gebaut und nun um meinen Fehler herum programmiert, wer weiß. Aber bei so einem derart ausgereiftem System wie Typo3 finde ich das echt nicht komisch :x