您好,这是一个非常基本的问题,但我是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,但我无法弄清楚这里出了什么问题。请作为初学者承担我的责任。
答案 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));