簡體   English   中英

密碼驗證不起作用

[英]Password Authentification does not working

嗨,這是一個非常基本的問題,但是我是yii framework和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) ;
        }

但是,當我鍵入密碼時,它不進行身份驗證,通常用戶名和密碼為演示,但我無法弄清楚這里出了什么問題。 請以我為初學者。

像這樣更改您的代碼...

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

應該有 與其他if()。 並確保在添加新用戶時,應使用md5()對密碼進行加密。 那也只需在數據庫中檢查一下即可。

我認為您在這方面有問題...

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

嘗試用這個改變它

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM