╃巡洋艦㊣ 2011-03-03 18:06:00 11821次浏览 7条评论 0 0 0

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

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

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

我的UserIdentity类例子:

<?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;
    }
}
?>

现在用户的属性已经设置,创建WebUser类并把它放在/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);
    }
}
?>

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

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

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

  • 评论于 2011-12-24 01:24 举报

    舰长的方法确实不错,我用了一下,不过在使用的时候发现YII里原来是提供这样的方法

    <?php
    class UserIdentity extends CUserIdentity
    {
        /**
        * User's attributes
        * @var array
        */
        private $_userId;
     
        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->_userId=$users->id;
    		$this->setPersistentStates($users->attributes);//这个方法是在Login之前调用
                }
            }
            return !$this->errorCode;
            public function getId()
    	{
    		return $this->_userId;
    	}
        }
    }
    ?>
    
  • 评论于 2011-12-30 10:37 举报

    找到下载了。 ^_^

  • 评论于 2012-02-03 09:53 举报

    'params'=>array('directory'=>'/opt/local/bin')
    directory对应的键值是什么?
    Yii::app()->image->load('images/test.jpg'); 里面的路径是相对路径?
    $image->save();不需要写路径?
    能加点自己的理解么?不要照搬,拜托

  • 评论于 2012-02-14 14:52 举报

    @chenyi62191056
    自己的问题别怪别人,别人给你提供餐具和食物已经很不错了,还要人喂你就不厚道了

  • 评论于 2012-02-25 14:49 举报

    怎么看不到评论了

  • 评论于 2012-09-25 11:00 举报

    在哪儿下载

  • 评论于 2013-05-31 11:51 举报

    修改 UserIdentity.php
    $this->setPersistentStates($user->attributes);

您需要登录后才可以评论。登录 | 立即注册