默认情况是登录后保存id和password ,在实际应用中需要保存登录用户的其他信息比如昵称、积分等信息,接下来讲一下如何实现member表中的字段在user中使用 新立商务网
首先用gii创建一个member类Member.php
保存位置protected/models/
Member.php
然后创建:
protected/components/UserIdentity.php 用于登录验证操作
class UserIdentity extends CUserIdentity { public $user; public function authenticate() { $this->errorCode=self::ERROR_PASSWORD_INVALID; $user=Member::model()->findByAttributes(array('userid'=>CHtml::encode($this->username))); if ($user) { if ($user->passwd === md5($this->password)) { $this->errorCode=self::ERROR_NONE; $this->setUser($user); } } unset($user); return !$this->errorCode; } public function getUser() { return $this->user; } public function setUser(CActiveRecord $user) { $this->user=$user->attributes; } }然后创建: protected/ components/WebUser.php 继承CWebUser类
class WebUser extends CWebUser { public function __get($name) { if ($this->hasState('__userInfo')) { $user=$this->getState('__userInfo',array()); if (isset($user[$name])) { return $user[$name]; } } return parent::__get($name); } public function login($identity, $duration=0) { $this->setState('__userInfo', $identity->getUser()); parent::login($identity, $duration); } }最后修改下配置文件main.php
'user'=>array( //user(用户)组件配置,“user”为组件ID 'class'=>'WebUser',//使用WebUser类 // 可以使用基于cookie 的认证 'allowAutoLogin'=>true,//允许自动登录 'stateKeyPrefix'=>'zgsx', //session前缀 ),接下来重新登录就可以用Yii::app()->user->字段名,用户表的所有的字段哦!