Zum Inhalt springen

Cookie-Problem mit mehren Tpo3s auf verschiedenen Subdomains

Erstellt am 19. Februar 2010 · 2 Antworten · letzte Antwort am 21. August 2010

Tags: felogin, Server & Hosting, Frage

g.​laber ·

Moin,
mich quaelt sein geraumer Zeit ein Loginproblem fuer die feuser, welches anscheinend mit den Cookies zu tun hat.

Szenario:
1. Typo3 liegt auf www.domain.de; das Cookie fe_typo_user hat den Domaineintrag ".domain.de" und als Expire "session", Cookiewert ist recht kurz (z.B. "60dd871104")
2. Typo3 liegt auf www.sub1.domain.de; das Cookie fe_typo_user hat den Domaineintrag "www.sub1.domain.de" und als Expire "session". Cookiewert ist "normal" (z.B.: "16f85b467ea6726768e5d1630a39342b")
Zugriff habe ich nur auf das 2. Typo3. Das 1. wird ganz woanders verwaltet. Also kann ich das die Cookiedomain von 1. nicht auf www.domain.de aendern lassen.

Wenn man jetzt die Seite www.sub1.domain.de aufruft werden alle Cookies, die zur Domain passen uebermittelt $_SERVER['HTTP_COOKIES'] aber nur das erste wird in $_COOKIES['fe_typo_user'] abgelegt und verwendet. Das kann mal das richtige und mal das flasche sein.

Ein Login, bei dem falschen Cookie endet darin, dass der USer kurz die Seite des erfolgreichen Logins angezeigt bekommt und beim weiteren klicken wieder sofort raus fliegt, da keine vernuenftige Session erstellt wurde.

Gibt es
1) eine Loesung dem Typo3 zu sagen, dass er nur das Cookie mit der Domain www.sub1.domain.de verwenden soll und das uebergeordnete .domain.de ignorieren soll?
2) eine Moeglichkeit den Cookienamen einfach zu aendern, so dass der das fe_typo3_user-Cookie gar nicht mehr beachtet, sondern nur noch das selbst gebastelte?
3) einen "sauberen" weg das domainweite Cookie zu loeschen?

Zu 3. hatte ich bisher das Problem, dass folender Befehl auf alle fe_typo_user-Cookies zugreift die auf den domaineintrag .domain.de passen
config.additionalHeaders = Set-Cookie: fe_typo_user=; path=/; domain=domain.de; expires=Sat, 01-Jan-2000 00:00:00 GMT;;

Fuer weitere Tipps waere ich sehr dankbar.

Gruss

Malte

sunfish ·

Hallo Malte,
es gibt im install tool die Möglichkeit für die typo3 Installation eine cookie domain festzulegen:

$TYPO3_CONF_VARS['SYS']['cookieDomain'] = '.beispielsweise.de';
http://www.typo3.net/backendkonfiguration/systemkonfiguration/

Ich bin überrascht, dass das nur sytemweit geht und dass es kein config.cookieDomain für das setup gibt, was für Multidomain Installationen durchaus Sinn machen würde.

Grüße

sunfish

sunfish ·

Domain für typo3 Login-Session Cookies festlegen (Multidomain Lösung)
Nachtrag - beim ersten Testen funktioniert Folgendes:

if ($_SERVER['HTTP_HOST'] == 'www.beispiel.de' || $_SERVER['HTTP_HOST'] == 'beispiel.de' )
{
  $TYPO3_CONF_VARS['SYS']['cookieDomain'] = '.beispiel.de';
}

Bei "www.beispiel.de" wird das Cookie fe_typo_user Subdomain übergreifend auf ".beispiel.de" gesetzt.

Bei der Domain www.example.com, in der gleichen typo3 Installation, wird das Cookie fe_typo_user auf "www.example.com" gesetzt. Ohne Bedingung in der typo3conf/local.conf erschien dort eine Cookie-Warnung, weil das Cookie fe_typo_user tatsächlich auf ".beispiel.de" gesetzt wurde und somit gar nicht ausgelesen werden konnte.

Schöne Grüße

sunfish

PS:
Der Hinweis stammt von Dmitry Dulepov, allerdings mit einer anderen Bedingung:
http://lists.typo3.org/pipermail/typo3-dev/2009-January/032800.html

My suggestion for typo3conf/localconf.php in such cases:

if (TYPO3_MODE == 'BE') {
	$TYPO3_CONF_VARS['SYS']['cookieDomain'] = $_SERVER['HTTP_HOST'];
}
else {
	$TYPO3_CONF_VARS['SYS']['cookieDomain'] = '.domain.tld';
}