标签:style blog color 使用 io 数据 ar cti
原本的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; } }
4.在User.php中添加一个validatePassword方法。
public function validatePassword($password){ return $this->encrypt($password)===$this->password; }
5.在User.php中添加一个加密的encrypt加密方法:
public function validatePassword($password){ return $this->encrypt($password)===$this->password; }
PS:UserController中:
‘user‘=array(‘*‘); 任意的用户
‘user‘=array(‘@‘); 注册的用户
‘user‘=array(‘admin‘);指定的用户
PS:Yii中create账户信息时候,希望保存在数据库中的密码是md5加密的话:
在User.php中添加一个方法:
public function validatePassword($password){ return $this->encrypt($password)===$this->password; }
标签:style blog color 使用 io 数据 ar cti
原文地址:http://www.cnblogs.com/mvpchenjian/p/3903540.html