|
通過(guò)擴(kuò)展CWebUser添加信息到Y(jié)ii:app()->user ╃巡洋艦㊣ 發(fā)布于 2011年03月03日 我發(fā)現(xiàn)了一個(gè)更好的解決方案。 (您的登錄驗(yàn)證可能與我的版本不同,因此你將會(huì)使用適合腳本,以滿(mǎn)足您的需求。我只告訴你我的意思) 步驟:1、添加$user屬性到UserIdentity類(lèi)。 添加getUser()方法-getter上面這個(gè)屬性。加setUser($user)方法-setter上面這個(gè)屬性,它可以賦值給user的信息通過(guò)$user這個(gè)屬性。 我的UserIdentity類(lèi)例子: <?php 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; } } ?> 現(xiàn)在用戶(hù)的屬性已經(jīng)設(shè)置,創(chuàng)建WebUser類(lèi)并把它放在/protected/components <?php 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); } } ?> 記得設(shè)置一下這個(gè)類(lèi)Yii::app()->user <?php 'components'=>array( 'user'=>array( 'class'=>'WebUser', ) ) ?> 應(yīng)該工作了,你現(xiàn)在可以用user的屬性訪(fǎng)問(wèn)用戶(hù)數(shù)據(jù)庫(kù)中列。 |
|
|