Falsche url zurück, in Yii-framework
Habe ich verwendet Yii::app()->user->returnUrl
aber es ist immer umleiten mir localhost/index.php
. Gibt es irgendeine bestimmte Konfiguration oder ein paar Stücke von code, die anderen Programme, die ich schreiben muss? Wenn Sie noch eine andere Lösungen, lassen Sie es mich wissen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
@aslingga, können Sie bitte erklären, was Sie zu tun versuchen, mit returnUrl? Sind Sie nur versuchen, zu erhalten zurück zu, wo Sie waren, nach der Anmeldung, oder verwenden Sie es irgendwo anders?
Dies ist aus der Yii Dokumentation:
In anderen Worten, wenn die Seite, die Sie versuchen, um Anfrage erfordert eine Authentifizierung, die URI der Seite, du bist auf Primärspeicher gespeichert erhält, der in einer session-Variablen. Dann, nachdem Sie eingeloggt haben, gelangen Sie zurück zu dieser Seite.
Einer Weise, die ich empfehlen würde, ist die Fehlersuche zu tun
print_r($_SESSION);
nur um sicherzustellen, dass die returnUrl wird tatsächlich gespeichert. Dann werden Sie in der Lage zu überprüfen, ob index.php gespeichert wird als returnUrl oder wenn Sie einfach nur umgeleitet wird, gibt es für einige Grund.Blick auf die CWebUser Methoden getState und setState könnte auch hilfreich sein.
Ich weiß, diese Frage ist alt, aber vielleicht hilft jemand, da ich nicht konnte ' T finden eine anständige Antwort überall.
Wie getReturnUrl funktioniert
Einstellung einer Standard-Rückgabe-URL für Ihren Yii-app erfordert ein wenig Anpassung. Die Art, wie es funktioniert out of the box ist, dass Sie geben Sie die Standard-URL zurück, jedes mal, wenn Sie nennen es:
Die Idee ist, dass, wenn ein Nutzer eine Seite besuchen, die eine Authentifizierung erfordert, werden Sie weitergeleitet auf die login-Seite, aber nicht vor Ort ausgeführt
Nun, wenn der Benutzer sich anmeldet, werden Sie zurück auf die Seite, die Sie beabsichtigte zu gehen.
Während ich mag, dass Funktionalität, das festlegen der Standard-URL zurück, jedes mal dumm ist. Wenn Sie möchten, ändern Sie die Standard-Rückgabe-URL, die Sie haben zu gehen finden es in Ihrem code. Ich nehme an, man könnte den Wert in einen Website-parameter, und rufen Sie
Ich glaube nicht, dass ich erklären muss, warum, die Lösung ist ärgerlich auch.
Meine Lösung
So, wenn getReturnUrl wird ohne Parameter aufgerufen wird, gibt es entweder '/index.php' oder nur '/'. Das ist in Ordnung, in einigen Fällen, aber nicht immer. Das ist besser IMO.
Erste, verlängern die CWebUser Klasse und fügen Sie die folgenden extras
Nun fügen wir ein paar Elemente, um die Benutzer Komponente-array.
Nicht nur ermöglicht es Ihnen, eine Standard-Rückgabe-URL in der config, sondern pflegt auch die Fähigkeit, einen anderen Standard-Rückgabe-URL, und verwenden Sie die setReturnUrl Funktionalität.
Ich denke, Sie müssen es: