以資料庫驗證登入
由於 Yii 內定的原始框架程式, 採用綁定在UserIdentity.php 的 demo 與 admin 帳號密碼:
??? public function authenticate()
??? {
??? ??? $users=array(
??? ??? ??? // username => password
??? ??? ??? 'demo'=>'demo',
??? ??? ??? 'admin'=>'admin',
??? ??? );
而一般的網際程式都希望能夠利用特定的 User 資料表中的帳號與密碼來進行登入驗證, 因此必須進行如下修改:
component\UserIdentity.php 中的
??? public function authenticate()
??? {
? // 根據使用者所輸入的 $this->username 在 User model 中(即對應資料表 user), 搜尋對應的
? // 用戶名稱
??? ??? $user=User::model()->find('LOWER(username)=?',array(strtolower($this->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;
??? }
用來利用資料表 user 驗證使用者登入.?
在 User.php Model 中還需要:
/**
?* Generates a salt that can be used to generate a password hash.
?* @return string the salt
?*/
protected function generateSalt()
{
??? return uniqid('',true);
}
截至目前為止, 已經完成下列事項: