密码验证不起作用

时间:2013-09-23 11:47:42

标签: php yii

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

  

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

但是当我输入密码时它没有进行身份验证,通常用户名和密码都是demo,但我无法弄清楚这里出了什么问题。请作为初学者承担我的责任。

2 个答案:

答案 0 :(得分:1)

像这样改变你的代码......

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

应该有与else if()。并确保在添加新用户时,应使用 md5()加密密码。这也只是在db ..中检查出来。

答案 1 :(得分:0)

我认为你在这方面有问题......

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

尝试使用此

进行更改
$user=  User::model()->findByAttributes(array('username'=>$username));