我在其成功的功能控制上有函数登录到dashboard/index
。假设用户输入leads/index
页面由于定义了访问规则而返回登录,我只想在成功登录控制转到最后输入的网址后 即leads/index
。
答案 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时才起作用,这会打开Google身份验证窗口。
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);
}