YII UserIdentity每次刷新都没有更新?

时间:2012-12-02 15:29:40

标签: yii

我有:

class WebUser extends CWebUser {
  private $_balance;
  public function getBalance()          { return $this->_balance; }
}

问题是,每次刷新页面时都需要更新此getBalance值。但它目前仅在用户第一次登录时执行此操作。如果用户被禁止,我将遇到同样的问题,并且他已经登录。

我如何解决这个问题?换句话说,每次用户重新加载页面时,如何强制刷新存储的用户状态?

以下是设置实际用户的代码:

public function authenticate()   {

$api = new api();
$user = $api->getAccountDetailsByCellNr($this->username);

if (empty($user)) {
  $this->errorCode = self::ERROR_USERNAME_INVALID;
}
else {

  if(!isset($this->username))
    $this->errorCode = self::ERROR_USERNAME_INVALID;
  else if($user->password !== md5($this->password) )
    $this->errorCode = self::ERROR_PASSWORD_INVALID;
  else {
    $this->errorCode = self::ERROR_NONE;

    $this->setState('balance', $user->balance);

  }

}

1 个答案:

答案 0 :(得分:1)

覆盖WebUser类中的init()函数。 类似的东西:

class WebUser extends CWebUser {
  ...
  public function init()
  {
    parent::init();
    $user = $api->getAccountDetailsByCellNr($this->username);
    $this->_balance = $user->balance;
  }
}