Аутентификация и авторизация Yii

Официальное руководство на русском здесь

Базовая идея - что к чему =>

для начала мы создаём модель формы входа в систему - с дополнительным методом login() который и произведёт проверку:

<?php

class LoginForm extends CFormModel
{
    public $username;
    public $password;
    public $rememberMe= true;

    private $_identity;

    public function rules()
    {
        return array(
            array('username', 'length', 'min'=>1, 'max'=>127),
            array('password', 'length', 'min'=>1, 'max'=>127)
        );
    }

    /*ниже описываем пордя кхода в систему пользователем*/
    public function login()
    {
        if($this->_identity===null)
        {
            $this->_identity=new UserIdentity($this->username,$this->password);
            $this->_identity->authenticate();
        }
        if($this->_identity->errorCode===UserIdentity::ERROR_NONE)
        {
          //  CWebUser::allowAutoLogin = true;
            /*ЗДЕСЬ ПРОБЛЕМА - runtime - папка необходимая
            для хранения временных файлов, доступ к которым
            долежн быть ограничен*/
            $duration=$this->rememberMe ? 3600*24*30 : 0; // 30 days
            Yii::app()->user->login($this->_identity);
            return true;
        }
        else
            return false;
    }
}

как мы видим этот метод инициализирует компонент UserIdentity =

$this->_identity=new UserIdentity($this->username,$this->password);
            $this->_identity->authenticate();

(мы пишем код данного компонента самостоятельно и размещаем в папке protected/components/UserIdentity.php)-
вот этот код=

<?php

/*класс ниже реализует ряд
методов, которые будут испоьзоваться для
идектификации пользователя*/
class UserIdentity extends CUserIdentity
{
    private $_id;// идентификатор
    /*для тестирования определим ниже стандартный логин
    и пароль*/
    private $name = "qwe";
    private $pass = "123";
    public function authenticate()
    {
       // $record=User::model()->findByAttributes(array('username'=>$this->username));
        if($this->name!==$this->username)
            $this->errorCode=self::ERROR_USERNAME_INVALID;
        else if($this->pass!== $this->password)
            $this->errorCode=self::ERROR_PASSWORD_INVALID;
        else
        {
            $this->_id=1;
            $this->setState('title', "lya-lya-lya");
            $this->errorCode=self::ERROR_NONE;
        }
        return !$this->errorCode;
    }

    public function getId()
    {
        return $this->_id;
    }
}

в случае если метод authenticate() вернёт успешный результат - открывается сессия в методе login() (см. первый листинг)
или выдаются куки данному пользователю (в примере выше - я не выдаю куки - просто открываю сессию)

Проверка

Чтобы проверить факт того, что пользователь вошёл в систему - выполнить подобный код:

  if (Yii::app()->user->isGuest) echo "У нас гости =)";
        else echo "Все дома =)";

более интересный пример смотрите здесь = http://fkn.ktu10.com/?q=node/3003