2016-05-31 14 views
1

Ich benutze Ajax um einen Benutzer von Subdomain einzuloggen. Die Yii2-App befindet sich in einer anderen Sub-Domain. Beide Subdomänen sind so konfiguriert, dass sie dieselben Cookie- und Sitzungsdomänen verwenden und Pfade speichern. Ich bin auch Sitzungs-ID mit Ajax rufen Sie die Benutzerinformationen auf die gleiche Sitzung von nicht-App Sub-Domain wie folgt verwendet schreiben:

$session = Yii::$app->session; 
$session->open(); 
$session->setId($post["session"]); 
$session["user.id"] = $user->id; 

echo $session->id; // This does not return the same ID originating from post! 

Leider Informationen der Benutzer nicht auf die Sitzung bereits bestehenden, geschrieben, sondern ein neu ein. Gibt es eine Sitzung irgendwo in der Mitte des Login-Prozesses oder warum funktioniert es nicht? Ich habe auch versucht session_id($post["session"]), aber nichts.

Dies war tatsächlich auf der vorherigen Domäne, so dass ich etwas verpassen muss. Alle von AJAX geposteten Informationen sind korrekt und überprüft, der Benutzer ist ordnungsgemäß angemeldet (überprüft die Protokolle), aber in falsche Sitzung.

Vielen Dank im Voraus!

Antwort

2

yii\web\Session::setId() ein Wrapper für session_id() ist, sollten Sie PHP-Dokumentation über diese Funktion erfahren:

string session_id([ string $id ])

Wenn id angegeben ist, wird die aktuelle Sitzungs-ID ersetzt. session_id() muss zu diesem Zweck vor session_start() aufgerufen werden.

So sollten Sie einfach versuchen:

$session = Yii::$app->session; 
$session->setId($customId); 
$session->open(); 
+0

Danke, das hilft ein wenig. Tatsächlich enthält die Sitzungsdatei jetzt die Informationen vor der Anmeldung und nach der Anmeldung (Benutzerdetails), die vorher nicht vorlagen, ABER schreibt die Sitzung dennoch in eine neue Datei mit einer völlig anderen ID. Irgendwelche Ideen? – jeesus

+0

Zum Beispiel '$ oldId = session_id(); $ session = Yii :: $ app-> Sitzung; $ session-> setId ($ oldId); $ session-> open(); $ session-> set ("oldId", $ oldId); '. Dann kann ich wirklich sehen, dass diese Sitzung die richtige alte ID speichert, aber aus irgendeinem Grund verwendet sie nicht die alte ID für die Sitzungs-ID, sondern nimmt nur eine neue ID. – jeesus

+0

Ok, verstanden. Musste die 'session_id()' nach '$ user-> login()' Methode zuweisen. – jeesus

0

Ich glaube nicht, dass Sie den richtigen Weg zu SET & GET Sitzung folgen.

Try This:

$session = Yii::$app->session; 
$session->open(); 
$session->set('id', $post["session"]); 
echo $session->get('id'); 

Für mehr Informationen, klicken Sie bitte Session Management - Yii2

+0

Danke, aber dies das Ergebnis nicht ändert. '$ session-> set()' fügt eine Sitzungsvariable hinzu. Ich muss die Session-ID selbst ändern, was laut Handbuch über '$ session-> setId()' möglich sein sollte. Letztere arbeitete an meinem vorherigen Server, also bin ich auf dem richtigen Weg, ich vermisse nur etwas ... – jeesus

Verwandte Themen