2013-04-22 8 views
6

Mam funkcję logowania po udanej kontroli funkcji idzie do dashboard/index, Załóżmy, że użytkownik wprowadza leads/index stronę wraca do logowania ze względu na zdefiniowane reguły dostępu, chcę tylko, że po pomyślnym Kontrola logowania przechodzi do ostatniego adresu URL podanego jako, tj. leads/index.Powrót do ostatniego adresu URL wpisanego po pomyślnym zalogowaniu się w YII

Dzięki za pomoc.

+0

Podczas wylogowywania użytkownika sprawdzającego reguły dostępu. Przekaż bieżący adres URL w ciągu zapytania. I po prostu przekieruj z powrotem do tego, jeśli zalogują się z powodzeniem. – Rikesh

Odpowiedz

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

Ta linia kodu działała dla mnie. Dziękuję za pomoc. $ this-> redirect (Yii :: app() -> user-> returnUrl); –

+0

Przykro mi, ale tak nie powinno być. Wszystko czego potrzebujesz to dodanie 'Yii :: app() -> user-> loginRequired()' do akcji wymagającej logowania (lub użycia reguł dostępu). Yii zrobi resztę za ciebie. Nie musisz ręcznie przekierowywać z przekierowaniami! –

2

myślę, że to będzie działać:

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

następnie wykorzystać,

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

przekierować.

lub możesz także wziąć udział w sesji.

przed logowania ustawić

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

tuż przed przekierowaniem po check logowania

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

Dziękuję, działa ... – ersks

0

myślę najbardziej prosta odpowiedź na to pytanie jest ten kod:

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

wykorzystanie ten kod to wszystko.

0

Dla Yii2. W kontrolera w funkcji actionLogin() użyj:

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

To będzie sprawdzić, czy logowanie nadchodzi ze strony domowej (getReturnUrl() == „/” ), a następnie po zalogowaniu będzie przekierowanie na desce rozdzielczej/strona indeksu. W przeciwnym razie nastąpi przekierowanie do żądanej strony.

0

Lepiej kontrolować, że zachowywanie sesji (paginacji na przykład ...), ale

return $this->goBack(); 

zadziała.

Powiązane problemy