原本的Yii里面只有admin和demo账号,怎么可以使用数据库里面的Username和Password登陆呢?
数据库:例如DatabaseName。
数据表:例如TableName,表里面有username和password等相关信息。
Yii:
1.在main.php开启'db'=array(…………),开启数据库连接(略)
2.生成TableName的model。
3.在UserIdentity.php中改变原本的账号审查。
代码如下:
<?php
class UserIdentity extends CUserIdentity
{
parivate $_id; // 定义一个私有变量
public function authenticate(){
$username=strolower($this->username);
$user=User::model()->find('LOWER(username)=?',array($username));
if($username===null){
$this->errorCode=self::ERROR_USERNAME_INVALID;
}else if(!$username->validatePassword($this->password)){
$this->errorCode=self::ERROR_PASSWORD_INVALID;
}
else{
$this->_id=$user->id;
$this->username=$username->username;
$this->errorCode=self::ERROR_NONE;
}
return $this->errorCode===self::ERROR_NONE;
}
public function getId(){
return $this->_id;
}
}
public function validatePassword($password){
return $this->encrypt($password)===$this->password;
}
4.在User.php中添加一个加密的encrypt加密方法:
public fucntion encrypt($pass){
return md5($pass);
}
PS:UserController中:
'user'=array('*'); 任意的用户
'user'=array('@'); 注册的用户
'user'=array('admin');指定的用户
PS:Yii中create账户信息时候,希望保存在数据库中的密码是md5加密的话:
在User.php中添加一个方法:
protect function beforeSave(){
if(parent::beforeSave()){
if($this->isNewRecord){
$this->password=$this->encrypt($this->password);
}
return true;
}else{
return false;
}
}
}