Функция Yii returnUrl - PullRequest
       15

Функция Yii returnUrl

6 голосов
/ 10 марта 2012

Здравствуйте, ребята, у меня есть этот код в файле конфигурации main.php:

'components' => array(
    '[.........]',
    'user'=>array(
        // enable cookie-based authentication
        'allowAutoLogin'=>true,
        'autoRenewCookie' => true,
        'returnUrl' => 'http://stackoverflow.com',
    )
);

Моя проблема в том, что id не перенаправляет пользователя на http://stackoverflow.com после входа, не могли бы вы мне помочь?

UserController.php:

public function actionLogin()
{
    if (!Yii::app()->user->isGuest){
        $this->redirect('/user/index');
        return;
    }

    $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));
}

Ответы [ 3 ]

8 голосов
/ 13 марта 2012

Я нашел решение для моей проблемы.Я добавил эти строки кода в login.php, чтобы после входа в систему пользователь перенаправлял на предыдущую страницу:

1 голос
/ 22 января 2014

Попробуйте, чтобы отслеживать последний посещенный действующий URL:

Добавить в свою конфигурацию:

'preload' => array(
    // preloading 'loginReturnUrlTracker' component to track the current return url that users should be redirected to after login
    'loginReturnUrlTracker'
),
'components' => array(
    'loginReturnUrlTracker' => array(
        'class' => 'application.components.LoginReturnUrlTracker',
    ),
    ...
),

Поместить этот файл в компоненты / LoginReturnUrlTracker.php:

<?php

class LoginReturnUrlTracker extends CApplicationComponent
{

    public function init()
    {
        parent::init();

        $action = Yii::app()->getUrlManager()->parseUrl(Yii::app()->getRequest());

        // Certain actions should not be returned to after login
        if ($action == "site/error") {
            return true;
        }
        if ($action == "site/logout") {
            return true;
        }
        if ($action == "site/login") {
            return true;
        }

        // Keep track of the most recently visited valid url
        Yii::app()->user->returnUrl = Yii::app()->request->url;

    }

}
0 голосов
/ 12 марта 2012

Yii перезаписывает этот URL-адрес возврата, заданный в файле конфигурации.

Вы можете определить этот URL-адрес возврата в параметрах или создать его с помощью функции createUrl.

...