2013-04-22 13 views
6

Ich habe Funktion Login auf seine erfolgreiche Funktion Steuerung geht auf dashboard/index, Angenommen, ein Benutzer geben leads/index die Seite zurück zu Login aufgrund der Zugriffsregeln definiert, will ich nur, dass nach erfolgreich Login-Kontrolle geht zur letzten eingegebenen URL dh leads/index.Zurück zur letzten Url eingegeben nach erfolgreicher Anmeldung in YII

Danke für Ihre Hilfe.

+0

Wenn Sie sich abmelden, überprüft der Benutzer die Zugriffsregeln. Übergeben Sie die aktuelle URL in der Abfragezeichenfolge. Und leiten Sie einfach zurück, wenn sie sich erfolgreich angemeldet haben. – Rikesh

Antwort

5
... Controller extends CController(){ 
... 
public function init() { 

    if($this->isValidForRedirectRequest(Yii::app()->request)){ 
     Yii::app()->user->returnUrl = Yii::app()->request->requestUri; 
    } 
} 
... 

public function isValidForRedirectRequest(){ 
    /*something validations of request, like isAjax or other */ 
} 
}... 




... LoginController()...{ 

if($authIdentity->authenticate()) $this->redirect(Yii::app()->user->returnUrl); 
... 

} 
+0

Diese Codezeile funktionierte für mich. Danke für Ihre Hilfe. $ this-> redirect (Yii :: app() -> user-> returnUrl); –

+0

Es tut mir leid, aber so soll es nicht gemacht werden. Sie müssen nur 'Yii :: app() -> user-> loginRequired()' zu der Aktion hinzufügen, die eine Anmeldung erfordert (oder Zugriffsregeln verwenden). Yii erledigt den Rest für dich. Sie müssen nicht manuell mit Weiterleitungen umgehen! –

2

ich denke, das funktioniert:

Yii::app()->user->setReturnUrl("Your url"); 

dann verwenden,

$this->redirect(Yii::app()->user->returnUrl); 

zu umleiten.

oder Sie können auch Hilfe der Sitzung nehmen.

vor der Anmeldung

gesetzt
Yii::app()->session['beforelogin'] = Yii::app()->request->requestUri;` 

kurz vor nach dem Login Check Umleiten

if(isset(Yii::app()->session['beforelogin'])) { 
    $this->redirect(Yii::app()->session['beforelogin']); 
} 
+0

Danke, es funktioniert ... – ersks

0

Ich denke, die einfachste Antwort auf diese Frage ist dieser Code:

$this->redirect(Yii::app()->request->urlReferrer); 

Einsatz Dieser Code das ist es.

0

Für Yii2. In Regler in Funktion actionLogin() verwenden, um dies:

if (Yii::$app->user->getReturnUrl() == '/') { 
    return $this->redirect('dashboard/index'); 
} else { 
    return $this->redirect(Yii::$app->user->getReturnUrl()); 
} 

Es prüft, ob die Anmeldung von Homepage (getReturnUrl() == ‚/‘ ) kommt, dann anmelden, nachdem es Sie Armaturenbrett umleitet/Indexseite. Andernfalls wird auf die angeforderte Seite umgeleitet.

0

Es ist besser, dass das Verhalten zu steuern, indem Sitzungen (Paginierung zum Beispiel ...), aber

return $this->goBack(); 

arbeiten.

Verwandte Themen