代码之家  ›  专栏  ›  技术社区  ›  mehsen

如何指定要绑定到CWebUser的name属性的用户表中的哪个字段?

  •  0
  • mehsen  · 技术社区  · 11 年前

    我发现yii可以通过以下方式获取并回显用户名:

        echo Yii::app()->user->name;
    

    我的问题是,如何在表user中指定要与CWebUser::name绑定的字段

    2 回复  |  直到 11 年前
        1
  •  2
  •   Pave    11 年前

    在您的配置中

    // application components
        'components'=>array(
            'user'=>array(
                // enable cookie-based authentication 
                'allowAutoLogin'=>true,
                'class'=>'WebUser',
            ),
    

    WebUser类(例如表“user”中的“email”字段):

      class WebUser extends CWebUser
        {
            public function getEmail() 
            {    
                if(!$this->getState('__email')&&$this->id)
                {
                    $user = User::model()->findByPk($this->id);
                    $this->setState('__email', $user->email);
                }
                $state = $this->getState('__email');
                return $state;
            }
    
            public function login($identity, $duration=0) 
            {
                $this->allowAutoLogin = true;
                parent::login($identity, $duration);
                $this->id = $identity->id;
                if (!$this->isGuest)
                {
                    if($user = User::model()->findByPk($this->id))
                    {
                        $this->setState('__email', $user->email);
                    }
                }
            }
        }
    
        2
  •  0
  •   timkame    11 年前

    您应该通过扩展CUserIdentity来编写自己的UserIdentity组件,并在用户标识声明$this->之后的authenticate()方法中;用户名=$user->变量