6

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

4

7 回答 7

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

}
于 2013-04-22T12:18:12.907 回答
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']);
}
于 2013-04-22T12:12:00.493 回答
1

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

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

使用此代码就是这样。

于 2015-09-23T09:14:43.593 回答
1

对于 Yii2。

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

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

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

于 2016-08-15T12:47:56.460 回答
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));
}
于 2018-07-12T04:51:50.013 回答
0

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

return $this->goBack();

将工作。

于 2016-08-15T12:54:23.367 回答
0

actionID=auth 时有一个条件,所以它只有在 action 是 auth 时才有效,这会打开 Google auth 窗口。

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);
}
于 2020-08-19T23:13:43.213 回答