首页 > PHP资讯 > PHP培训技术 > 通过扩展CWebUser添加信息到Yii:app()->user

通过扩展CWebUser添加信息到Yii:app()->user

PHP培训技术

我发现了一个更好的解决方案。

(您的登录验证可能与我的版本不同,因此你将会使用适合脚本,以满足您的需求。我只告诉你我的意思)

步骤:1、添加$user属性到UserIdentity类。 添加getUser()方法-getter上面这个属性。加setUser($user)方法-setter上面这个属性,它可以赋值给user的信息通过$user这个属性。

我的UserIdentity类例子:

 class UserIdentity extends CUserIdentity { /**    * User's attributes    * @var array */ public $user; public function authenticate() { $this->errorCode=self::ERROR_PASSWORD_INVALID; $user=User::model()->findByAttributes(array('email'=>CHtml::encode($this->username))); if ($user) { if ($user->password === md5($user->salt.$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; } } ?>

现在用户的属性已经设置,创建WebUser类并把它放在/protected/components

 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) { $this->setState('__userInfo', $identity->getUser()); parent::login($identity, $duration); } } ?>

记得设置一下这个类Yii::app()->user

 'components'=>array( 'user'=>array( 'class'=>'WebUser', ) ) ?>

应该工作了,你现在可以用user的属性访问用户数据库中列。

PHP培训技术

本文由欣才IT学院整理发布,未经许可,禁止转载。
支持19不支持0