我在其成功的功能控制转到功能登录dashboard/index
。假设leads/index
由于定义的访问规则,用户进入页面返回登录,我只想在成功登录后控制进入最后输入的 URL,即leads/index
。
问问题
8066 次
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 回答