teilen Sie die Authentifizierung zwischen Domain und Subdomain in Symfony 2.1

8

In einer Anwendung habe ich einen Javascript-Chat mit langem Polling implementiert. Da nur eine Ajax-Anfrage pro Domain erlaubt ist, wollte ich die Umfrage in eine Subdomain verschieben.

Ich habe also zwei Bereiche:

%Vor%

In meinem config.yml habe ich Folgendes eingegeben:

%Vor%

Aber Symfony hält mich nicht eingeloggt, wenn ich versuche, über Ajax auf der Subdomain abzufragen.

Haben Sie eine Idee, wie Sie die Sitzung in den Subdomains behalten können? Ich benutze den FOSUserBundle

    
Johannes Klauß 12.12.2012, 15:39
quelle

1 Antwort

2

Zuerst müssen die beiden Anwendungen die fos_user -Tabelle freigeben, damit sie den Benutzer erneut laden können. Da Sie "eine App und die beiden Domains auf dieselbe App verweisen" haben. Das sollte schon stimmen.

Als Nächstes legen Sie fest, dass der Sitzungscookie zwischen der Domäne und der Subdomäne geteilt wird. Die Konfiguration in deiner Frage ist korrekt. Damit FOSUserBundle jedoch den Benutzer neu laden kann, wenn Sie von dev.site.com zu poll.dev.site.com wechseln, müssen Sie den Sitzungsspeicher zwischen den beiden Domänen freigeben.

Am einfachsten kann ich vorschlagen, die Sitzung in einer Datenbank zu speichern. Dies wird durch Verwendung der PdoSessionStorage in Symfony erreicht. In der offiziellen Dokumentation erfahren Sie, wie Sie den Sitzungsspeicher einrichten , um dies zu tun.

Wenn alles oben korrekt ausgeführt wurde, sollten Sie sich nicht in einem sicheren Bereich auf dev.site.com anmelden und dann die URL in einen anderen sicheren Bereich auf poll.dev.site.com ändern, ohne dass Sie Anmeldedaten angeben müssen nochmal. Beachten Sie, dass die Benutzeranmeldeinformationen nur in einem sicheren Bereich geladen werden.

Wenn poll.dev.site.com direkt im Browser geöffnet wird, müssen die Anmeldedaten erneut eingegeben werden. Sie müssen einige zusätzliche Arbeit tun, um die Ajax-Anfrage zu funktionieren.

Nach diesen beiden Fragen: Setzen eines Cookies auf einer Subdomain von einer Ajax-Anfrage , Multi-Sub-Domain-Cookies und Ajax-Probleme das Problem ist wahrscheinlich die Ссылка .

Die erste schlägt vor, die folgenden Header-Felder auf dev.site.com zu setzen:

%Vor%

Und dann übergeben Sie withCredentials für die Ajax-Anfrage.

%Vor%

Ich habe es mit einer Dummy-Datei getestet, die nur den Cookie setzen und versuchen würde, die Anfrage zu umgehen. Ich habe es funktioniert, wenn ich withCredentials auf der Ajax-Anfrage hatte, aber ich konnte keinen Unterschied sehen, wenn ich mit / ohne die Access-Control-Allow- * Header versuchte.

Die andere Antwort schlug vor, document.domain zu verwenden, aber ich teste das nicht.

Ich habe Opera's Dragonfly verwendet, um den Netzwerkverkehr zu untersuchen, wenn der Cookie-Header beim Testen an den Server gesendet wurde. Sie können Firebug, Chrome oder wahrscheinlich auch IE verwenden.

    
lz. 24.03.2013 17:03
quelle