Heim  >  Artikel  >  Backend-Entwicklung  >  Was soll ich tun, wenn die automatischen Login-Cookies von YII2 immer ablaufen?

Was soll ich tun, wenn die automatischen Login-Cookies von YII2 immer ablaufen?

小云云
小云云Original
2018-02-10 13:30:291434Durchsuche

Ich habe kürzlich die automatische Anmeldefunktion von Yii2 ausprobiert und festgestellt, dass sich Yii2 nach dem Schließen des Browsers beim erneuten Öffnen des Browsers immer noch im Nicht-Anmeldestatus befindet, selbst wenn die automatische Anmeldekonfigurationsfunktion von Yii2 aktiviert ist. Bei der Online-Suche nach Informationen gibt es grundsätzlich keine vergleichbare Situation. Dieser Artikel stellt Ihnen hauptsächlich die Lösung für das Problem vor, dass das automatische Anmelde-Cookie von YII2 immer fehlschlägt. Ich hoffe, dass es für alle nützlich ist.

Vorwort

Fragen Sie den Anmeldequellcode ab:

protected function sendIdentityCookie($identity, $duration)
{
 $cookie = new Cookie($this->identityCookie);
 $cookie->value = json_encode([
  $identity->getId(),
  $identity->getAuthKey(),
  $duration,
 ], JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
 $cookie->expire = time() + $duration;
 Yii::$app->getResponse()->getCookies()->add($cookie);
}

Drucken Sie die Cookie-Variable aus und stellen Sie fest, dass es kein Problem mit dem Inhalt gibt. Es ist kein Problem, den Code zur Ausführung auf andere Controller zu kopieren.

Überprüfen Sie den Browser. Die von Yii2 festgelegte Sitzungs-ID ist ebenfalls normal, dh die Cookie-Einstellung ist hier einfach nicht erfolgreich.

Da es kein Problem mit dem System und dem Browser gibt, liegt ein Problem mit dem Übertragungsprozess vor.

Später entdeckte ich schließlich: Es stellte sich heraus, dass ich nach dem Aufruf der Anmeldemethode $model->login() die JSON-Daten direkt an den Browser ausgebe und dahinter eine Exit-Methode steckt, die direkt funktioniert verhindert, dass der Controller die Ausführung fortsetzt.

Daher endet die Ausführung von yii2 beim Beenden, was dazu führt, dass die Header-Informationen nicht an den Browser übertragen werden. Der Browser erhält also überhaupt nicht den Befehl von PHP, das Cookie zu setzen.

Zusammenfassung

Für Yii2-Login oder Controller, die Cookies setzen müssen, niemals beenden oder sterben, if else direkt zur Beurteilung verwenden, Ausführung nicht unterbrechen.

Verwandte Empfehlungen:

Analyse und Implementierung von Single-Sign-On-Cookies in PHP

Beispiel für eine PHP-simulierte Anmeldung, die Anmelde-Cookie-Informationen speichert

PHP-Curl-Login-Cookie-Wert-Zugriffsbeispiel

Das obige ist der detaillierte Inhalt vonWas soll ich tun, wenn die automatischen Login-Cookies von YII2 immer ablaufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn