Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Libraries > yii авторизация


Автор: studentigor 1.3.2012, 13:52
всем привет.

Решил разобратся с yii.

в литературе, по которой я начал учить написано что начинать нужно с регистрации/авторизации.

вобщем авторизация
код с контроллера
Код

if(isset($_POST['LoginForm'])){
            $model->attributes=$_POST['LoginForm'];
            if($model->validate() && $model->login())
                $this->redirect(Yii::app()->user->returnUrl);


тут отправляюсь в модель LoginForm в метод login, вот он
Код

public function login()
    {
        if($this->_identity===null)
        {
            $this->_identity=new UserIdentity($this->login,$this->password);
            if($this->_identity->authenticate()){
                Yii::app()->user->login($this->_identity);
                
            }
            else{
             echo $this->_identity->errorMessage;
         }
        }
        print_r($this->_identity->errorCode);//если есть ошибка - получаю результат. если нет, должен получить 0, но ничего не получаю
        if($this->_identity->errorCode===UserIdentity::ERROR_NONE)
        {
            $duration=$this->rememberMe ? 3600*24*30 : 0; // 30 days
            Yii::app()->user->login($this->_identity,$duration);
            return true;
        }
        else
            return false;
    }

метод логин отправляет меня, в свою очередь, в компонент UserIdentity, вот куда
Код

public function authenticate()
    {
        $users=array(
            // username => password
            'igot'=>'12345',
        );
        if(isset($users[$this->username]))
            $this->errorCode=self::ERROR_USERNAME_INVALID;
        else if($users[$this->username]!==$this->password)
            $this->errorCode=self::ERROR_PASSWORD_INVALID;
        else
            $this->errorCode=self::ERROR_NONE;
        print_r($this->errorCode);//тут результат есть в любом случае.
        return $this->errorCode;
    }


так вот вопрос $this->identity->authenticate() должен мне вернуть либо код ошибки, либо 0 если ошибок нет. перед ретурном у меня віводится код ошибки, если ошибка есть то 
Код

print_r($this->_identity->errorCode);
        if($this->_identity->errorCode===UserIdentity::ERROR_NONE)

она выводится, а если код ошибки 0 - то уже не выводится, тоесть получается что результат гдето теряется, ну соответственно если логин и пароль правельный, то авторизация не происходит.

Я понимаю что это тут легко, но та литература по которой я начал учить, там вроде как все попарядку написано, но немного сложновато.
Если кто встречал литературу по YII для чайников(но на русском) дайте ссылк

Автор: SamDark 1.3.2012, 18:51
http://yiiframework.ru/doc/blog/ru/prototype.auth

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)