返回到Yii成功登录后输入的最后一个URL

时间:2013-04-22 12:00:59

标签: php yii

我在其成功的功能控制上有函数登录到dashboard/index。假设用户输入leads/index页面由于定义了访问规则而返回登录,我只想在成功登录控制转到最后输入的网址后 leads/index

7 个答案:

答案 0 :(得分:4)

... 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);
...

}

答案 1 :(得分: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']);
}

答案 2 :(得分:1)

对于Yii2。

在方法actionLogin()的控制器中使用:

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

它将检查登录是否来自主页(getReturnUrl() == '/'),然后在登录后它会将您重定向到dashboard/index页面。否则,它将重定向到请求的页面。

答案 3 :(得分:1)

在您的$this->redirect(Yii::app()->user->returnUrl)中使用SiteController

public function actionLogin() {
    $this->setTheme();
    $this->layout = '//layouts/login';
    $model = new LoginForm;

    // if it is ajax validation request
    if (isset($_POST['ajax']) && $_POST['ajax'] === 'login-form') {
        echo CActiveForm::validate($model);
        Yii::app()->end();
    }

    // collect user input data
    if (isset($_POST['LoginForm'])) {
        $model->attributes = $_POST['LoginForm'];
        // validate user input and redirect to the previous page if valid
        if ($model->validate() && $model->login())
            $this->redirect(Yii::app()->user->returnUrl);
    }
    // display the login form
    $this->render('login', array('model' => $model));
}

答案 4 :(得分:0)

我认为这个问题最简单的答案是这段代码:

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

使用此代码。

答案 5 :(得分:0)

最好通过会话来控制这种行为(例如,分页......),但是,

return $this->goBack();

会奏效。

答案 6 :(得分:0)

当actionID = auth时存在一个条件,因此仅当action为auth时才起作用,这会打开Goog​​le身份验证窗口。

public function beforeAction($action){
  if ($action->id == 'auth' && Yii::$app->request->referrer !== null) {
        Yii::$app->session->set('returnUrl', Yii::$app->request->referrer);
  }
 return parent::beforeAction($action);
}