Как проходит авторизация

Начал изучать этот фраймворк. Создал типовый проект. И никак не могу понять куда уходят даные с формы при регистарции, как с этим всем связан компонент UserIndenty. Объясните пожалуйста, если кто может.

Вы, наверное, имели в виду при аутентификации? (стандартный проект регистрацию не предусматривает).

При заполнении полей формы и нажатии кнопки submit данные post запросом отправляются по текущему адресу (index.php?r=site/login).

Смотрим контроллер SiteController и actionLogin:




public function actionLogin()

{

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

}



С формой связана модель LoginForm, которая имеет атрибуты username, password и rememberMe. Ключевым валидатором в разделе rules() является array(‘password’, ‘authenticate’). Он не является стандартным, и его код располагается в том же классе LoginForm (метод authenticate).

Ключевым моментом этого метода является создание объекта класса UserIdentity с параметрами username и password. Этот класс наследует класс CUserIdentity, который служит для идентификации пользователя, но не содержит в себе реализации метода authenticate(). Это нам нужно сделать самим в зависимости от задачи и желаемого метода аутентификации. Обычно в этом методе должно быть обращение к базе данных и проверка переданных имени и пароля, но стандартная реализация, сгенерированная утилитой yiic, просто ищет пользователей в заранее определенном в том же методе массиве $users, а затем возвращает тот или иной код ошибки (или код self::ERROR_NONE, если аутентификация прошла успешно).

Итак, всё вышеописанное происходит в методе $model->validate(). Для успешного входа остается только выполнить условие $model->login(). К счастью, оно гораздо проще :) Несмотря на то, что там вставлены различные if’ы, в нашем случае (т.к. валидацию форма прошла) сразу исполнится строка




Yii::app()->user->login($this->_identity,$duration);



Метод login класса CWebUser сохраняет некоторую информацию о пользователе в сессии в течение периода $duration, используя данные созданного выше объекта UserIdentity. Сохраняет он, естественно, только самые необходимые данные (например, id пользователя, который по умолчанию равен username), но можно сохранить и больше информации, используя при аутентификации метод setState.

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




$this->redirect(Yii::app()->user->returnUrl);



спасибо за ответ