0

嗨,这完全是一个非常基本的问题,但我是 yii 框架和 php 的新手。我已经定制了 UserIdentity.php这样的

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

但是当我输入密码时它不会进行身份验证,通常用户名和密码是演示但我无法弄清楚这里出了什么问题。请作为初学者忍受我。

4

2 回答 2

1

像这样更改您的代码...

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

应该有否则如果()。并确保在添加新用户时应使用md5()加密密码。那也只是在db中检查一下..

于 2013-09-23T11:52:57.723 回答
0

我认为你在这一行有问题......

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

尝试用这个来改变它

$user=  User::model()->findByAttributes(array('username'=>$username));
于 2013-09-23T14:19:47.587 回答