2013-04-22 5 views
6

Tôi có chức năng đăng nhập vào điều khiển chức năng thành công của nó, truy cập dashboard/index, Giả sử người dùng nhập leads/index trang trở lại để đăng nhập do quy tắc truy cập được xác định, tôi chỉ muốn sau khi thành công kiểm soát đăng nhập vào url cuối cùng được nhập tức là leads/index.Quay lại Url cuối cùng được nhập sau khi đăng nhập thành công vào YII

Cảm ơn sự giúp đỡ của bạn.

+0

Khi bạn đăng xuất người dùng kiểm tra quy tắc truy cập. Chuyển url hiện tại vào chuỗi truy vấn. Và chỉ cần chuyển hướng trở lại đó nếu họ đăng nhập thành công. – Rikesh

Trả lời

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

Dòng mã này làm việc cho tôi. Cảm ơn sự giúp đỡ của bạn. $ this-> redirect (Yii :: app() -> user-> returnUrl); –

+0

Tôi xin lỗi, nhưng đây không phải là cách thực hiện. Tất cả những gì bạn cần là thêm 'Yii :: app() -> user-> loginRequired()' vào hành động yêu cầu đăng nhập (hoặc sử dụng các quy tắc truy cập). Yii làm phần còn lại cho bạn. Không cần phải lộn xộn xung quanh với chuyển hướng bằng tay! –

2

Tôi nghĩ rằng điều này sẽ làm việc:

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

sau đó sử dụng,

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

để chuyển hướng.

hoặc bạn cũng có thể trợ giúp phiên.

trước khi đăng nhập thiết

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

ngay trước khi chuyển hướng sau khi kiểm tra đăng nhập

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

Cảm ơn bạn, Nó đang hoạt động ... – ersks

0

Tôi nghĩ rằng câu trả lời đơn giản nhất cho câu hỏi này là mã này:

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

sử dụng mã này là nó.

0

Đối với Yii2. Trong điều khiển chức năng actionLogin() sử dụng này:

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

Nó sẽ kiểm tra nếu đăng nhập được đến từ trang chủ (getReturnUrl() == '/' ), thì sau khi đăng nhập nó sẽ chuyển hướng bạn tới bảng điều khiển /trang mục lục. Nếu không, nó sẽ chuyển hướng đến trang được yêu cầu.

0

Nó tốt hơn để kiểm soát hành vi của phiên (pagination ví dụ, ...) nhưng,

return $this->goBack(); 

sẽ làm việc.