2013-09-23 6 views
0

Привет, это очень простой вопрос, но я новичок в yii framework и php. Я настроил UserIdentity.php следующим образомПароль Authentification не работает

private $ _id;

public function authenticate() { 

     $username=strtolower($this->username); 
     $user= User::model()->find('Lower(username)=?',array($username)); 
     if($user===NULL) 
      $this->errorCode=self::ERROR_USERNAME_INVALID; 
     else if($user->validatePassword($this->password)) 
      $this->errorcode=self::ERROR_PASSWORD_INVALID; 
     else 
     { 
      $this->_id=$user->id; 
      $this->username=$user->username; 
      $this->errorCode=self::ERROR_NONE; 
     } 
     return $this->errorCode=self::ERROR_NONE ;  /* 
     $users=array(   // username => password    'demo'=>'demo',    'admin'=>'admin',  ); 
    if(!isset($users[$this->username])) 
     $this->errorCode=self::ERROR_USERNAME_INVALID; 
    elseif($users[$this->username]!==$this->password) 
     $this->errorCode=self::ERROR_PASSWORD_INVALID;  else 
     $this->errorCode=self::ERROR_NONE;  return !$this->errorCode; 

     */ } 

и в User.php модели я пишу, как этот

public function validatePassword($password) 
     { 
      return $this->hashPassword($password)===$this->password; 
     } 
     public function hashPassword($password) 
     { 
      return md5($password) ; 
     } 

но когда я печатаю пароль, если он не проходит проверку подлинности, как правило, имя пользователя и пароль демо, но я не могу понять, это то, что, что происходит здесь неправильно. Пожалуйста, возьми меня как новичок.

ответ

1

Измените код, как это ...

else if(!$user->validatePassword($this->password)) 
     $this->errorcode=self::ERROR_PASSWORD_INVALID; 

должно быть ! с else if(). и убедитесь, что при добавлении нового пользователя пароль должен быть зашифрован с использованием md5(). что также просто проверить его в БД ..

+0

Я пробовал, но то же самое результат. –

+0

проверить свою базу данных .. это действительно кодирование? если да, то попробуйте зарегистрировать нового пользователя и проверьте .. – Kalpit

0

Я думаю, что у вас есть проблемы в этой линии ...

$user= User::model()->find('Lower(username)=?',array($username)); 

попытаться изменить его с помощью этой

$user= User::model()->findByAttributes(array('username'=>$username));