默认情况是登录后保存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->字段名,用户表的所有的字段哦!