Ich habe eine Funktion, die unsere API namens executeGetRequest aufruft (mit Varianten für andere HTTP-Methoden). Es ist statisch und befindet sich in einer Basisklasse. Es wird von Controllern aufgerufen. Wenn die API einen 401-HTTP-Statuscode zurückgibt, sollte executeGetRequest den Benutzer auf die Abmeldeseite im "Frontend" -Yii2-Projekt umleiten, um die veralteten Sitzungsdaten zu löschen.Yii2: Führe eine Umleitung aus dem statischen Nicht-Controller-Kontext aus
Mein Kollege und ich haben mehrere verschiedene Möglichkeiten zum Redirect ausprobiert. $ this-> redirect() wird nicht funktionieren, weil $ kein Objekt aus einem statischen Kontext ist.
return Yii::$app->getResponse()->redirect(Url::to('login/user-logout'));
funktioniert nicht.
Yii::$app->getResponse()->redirect(Url::to('login/user-logout'))->send();
return;
funktioniert nicht. Wir haben diese mit und ohne Url :: to() ausprobiert.
Ich konnte eine Yii :: trace() in der Bedingung, die für die 401-Antwort überprüft. Es funktioniert gut. Das Problem ist also nicht die Erkennung von 401 Statuscodes, sondern die Umleitung.