Zum Inhalt springen

Login ohne Cookies

Erstellt am 5. April 2005 · 2 Antworten · letzte Antwort am 10. August 2006

Tags: felogin, PHP, Frage

Desaya ·

Hallo zusammen,

ich bin gerade dabei Typo3 für einen Kunden anzupassen und hab dafür das Login ein klein wenig verändert so dass es jetzt auch ohne Cookies und mit HTTP_AUTH-Login funktioniert.

Die einzige Datei, die ich verändert habe, ist /t3lib/class.t3lib_userauth.php

Ich poste hier mal alle Änderungen, vielleicht hat ja noch jemand Verbesserungsvorschläge. Erstmal der Original Typo3 Code:
(zeile 164 in 'function start()')
$id = isset($_COOKIE[$this->name]) ? stripslashes($_COOKIE[$this->name]) : '';

Ersetzt duch:
// Do we have any session data?
// first we check for cookies
if( isset($_COOKIE[$this->name]) ) {
$id = stripslashes($_COOKIE[$this->name]);
} // then for sessions
elseif( session_start() ) {
$id = session_id();
} //set to false, if there was no data
else {
$id = '';
}

Typo3 Code:
(~ zeile 300 in 'function check_authentication()')
if ($this->getMethodEnabled) {
$F_status = t3lib_div::_GP($this->formfield_status);
$F_uname = t3lib_div::_GP($this->formfield_uname);
$F_uident = t3lib_div::_GP($this->formfield_uident);
$F_chalvalue = t3lib_div::_GP($this->formfield_chalvalue);
} else {
$F_status = t3lib_div::_POST($this->formfield_status);
$F_uname = t3lib_div::_POST($this->formfield_uname);
$F_uident = t3lib_div::_POST($this->formfield_uident);
$F_chalvalue = t3lib_div::_POST($this->formfield_chalvalue);
}

Hinzugefügt (direkt unten dran):
// do we have an AUTH_USER and the param DoLogin is contained in the URL?
if( !is_null( t3lib_div::_GP('DoLogin')) && isset($_SERVER['PHP_AUTH_USER']) ) {
// set diffrent vars for typo3 to fulfil the login
$F_status = 'login';
$F_uname = $_SERVER['PHP_AUTH_USER'];
$F_uident = $_SERVER['PHP_AUTH_PW'];
$F_chalvalue = '';
}

Mit diesen Änderungen funktioniert das Typo3 FrontEnd sowohl mit als auch ohne Cookies. Allerdings muss man eine PHP-Einstellung überprüfen, session.use_trans_sid = 1, muss gesetzt sein, damit an alle links automatisch die Session_ID angehängt wird.
die URL zum einloggen muss so aussehen:
'index.php?id=1&DoLogin' oder einfach nur
'index.php?DoLogin'

Thats it 🙂

Hat da jemand irgendwelche Verbesserungsvorschläge zu oder gar einen Bug gefunden?

Diese Anpassung habe ich im Rahmen meiner Ausbildung zur Anwendungsentwicklerin bei der 5 Point AG gemacht. Ich hoffe ihr findet's genauso toll wie mein Chef 😉

Viel Spass damit
Desaya

Plattfuss ·

Hallo Desaya...

tolle Erweitung, aber ich habe da noch ein paar Fragen... 😃

Funktioniert Deine Erweitung auch, wenn ich "mod_rewrite" aktiviert habe (weil keine session ID) für echte und einfache URLs...

Funktioniert diese Erweitung auch bei der 3.8.0 version...

Viele Grüsse...

Plattfuss 😃

sven_hom ·

Hallo Zusammen!

Ich hab' die Änderungen für einen Webauftritt unter Typo3 3.7 vorgenommen
und alles funktioniert einwandfrei.
Jetzt hab' ich für eine neue Webseite T3 in der Version 3.81 eingesetzt und
die Datei class.t3lib_userauth.php entsprechend angepasst. Soweit so gut; die Session-ID wird an die URL angehängt, wenn der Browser keine Session-Cookies akzeptiert. Allerdings wird jetzt im Frontend ein eingeloggter BE-User nicht mehr erkannt und somit auch kein Admin-Panel, Vorschau versteckter Seiten usw. angezeigt.
Hat jemand diese Änderungen in der Version 3.8 durchgeführt und ähnliche Erfahrungen gemacht oder das Ganze sogar irgendwie zum Laufen gebracht?

Viele Grüße,
Sven