2013-04-22 42 views
6

我有功能登錄其成功的功能控制去dashboard/index,假設用戶輸入leads/index由於訪問規則定義頁面回來登錄,我只想在成功後登錄登錄控制轉到最後輸入的網址leads/index返回最後一個網址在YII成功登錄後輸入

感謝您的幫助。

+0

當您註銷用戶檢查訪問規則。傳遞查詢字符串中的當前網址。如果他們成功登錄,只需重新導入即可。 – Rikesh 2013-04-22 12:05:34

回答

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

這行代碼適合我。感謝您的幫助。 $ this-> redirect(Yii :: app() - > user-> returnUrl); – 2013-04-22 12:24:48

+0

我很抱歉,但這不是它應該如何完成的。您只需要將'Yii :: app() - > user-> loginRequired()'添加到需要登錄(或使用訪問規則)的操作中。 Yii爲你休息。無需手動轉向重定向! – 2013-04-22 14:19:17

2

我認爲這將工作:

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

再使用,

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

重定向。

或者你也可以藉助會話。

之前登錄設置

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

剛剛登錄檢查後重定向

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

謝謝,它正在工作... – ersks 2017-03-07 03:54:07

0

我想對於這個問題最簡單的答案是這樣的代碼之前:

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

使用這就是它的代碼。

0

對於Yii2。 在功能actionLogin控制器()使用此:

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

它會檢查,如果登錄時從主頁來(getReturnUrl()==「/」 ),然後登錄後,你會重定向到儀表板/索引頁面。否則,它將重定向到請求的頁面。

0

這是更好地控制由會話的行爲(例如分頁,...),但是,

return $this->goBack(); 

會工作。

相關問題