Yii's Captcha Doesn't Show Up, Unless Remove The Accesscontrol

Only when I remove the filters() method, the captcha can show up. other time the captcha doesn’t work. and my php gd support is enable. by the way, if I access test/captcha directly, it only show a picture box, but not content, maybe can not load the picture…

Here is my TestController.php




class TestController extends Controller

{

public function actionIndex()

{

    $this->render('index');

}


public function actions()

{

    return array(

        // captcha action renders the CAPTCHA image displayed on the contact page

        'captcha'=>array(

            'class'=>'CCaptchaAction',

            'backColor'=>0xFFFFFF,

            'minLength' => 4,

            'maxLength' => 4,

            'testLimit' => 99999

            )

    );

}




public function filters()

{

    // return the filter configuration for this controller, e.g.:

    return array(

        "accessControl",

    );

}


public function accessRules()

{

    return array(

        array('allow',  // allow all users to perform 'index' and 'view' actions

            'actions'=>array('captcha','index'),

            'users'=>array('*')

        )

    );

}



and I use a custome WebUser:




<?php 


// this file must be stored in: 

// protected/components/WebUser.php 


class WebUser extends CWebUser { 


  // Store model to not repeat query. 

  private $_model; 


  // Return first name. 

  // access it by Yii::app()->user->first_name 

  public function getDisplayName(){ 

    $user = $this->loadUser(Yii::app()->user->id);

    if($user)

    	return $user->display_name; 

  } 

  

  public function getGroupId(){

	  $user = $this->loadUser(Yii::app()->user->id); 

	  return $user->group_id;

  }


  // This is a function that checks the field 'role' 

  // in the User model to be equal to 1, that means it's admin 

  // access it by Yii::app()->user->isAdmin() 

  public function isAdmin(){ 

	  $user = $this->loadUser(Yii::app()->user->id); 

	  return intval($user->group_id) == 1; 

  } 

  

  public function isGroupAAS(){

	  $user = $this->loadUser(Yii::app()->user->id); 

	  return intval($user->group_id) == 1001;

  }

  


  // Load user model. 

  protected function loadUser($id=null) 

    { 

        if($this->_model===null) 

        { 

            if($id!==null) 

                $this->_model=User::model()->findByPk($id); 

        } 

        return $this->_model; 

    }

  

  protected function afterLogin($fromCookie){

	  $user = $this->loadUser($this->id);

	  $user->last_login_ip = Yii::app()->request->userHostAddress;

	  $user->last_login_time = new CDbExpression('NOW()');

	  $user->save();

  }

   

} 

?> 



If I remove the WebUser from the config, it will works well.