Sesion Y Autologin

Hola,

mi problema es un fallo al realizarse el autoLogin cuando se marca la casilla de "remember me" en el LoginForm.

Mi aplicación guarda datos de el cliente que se loguea en una variable de sesión. El caso es que cuando se "recuerdan" los datos y se cierra el navegador, al volver a abrir y entrar en la página el login es erróneo, faltan dichos datos del cliente que estaban en la sesion.

He intentado guardar dichos datos en la cookie con setState() y setPersistentStates() en el UserIdentity.php que es donde se agregan los datos en la sesion, pero parece que o no se crea bien la sesion, o no se añaden bien los datos con getSession()->add() o no se restauran los datos desde la cookie. A ver si alguien pudiera ayudarme… Gracias!

El archivo UserIdentity.php tiene esta pinta:


class UserIdentity extends CUserIdentity

{

	/**

	 * Authenticates a user.

	 * The example implementation makes sure if the username and password

	 * are both 'demo'.

	 * In practical applications, this should be changed to authenticate

	 * against some persistent user identity storage (e.g. database).

	 * @return boolean whether authentication succeeds.

	 */

     private $_nifcif;

     private $_codsec;

     private $errorcode;


	public function authenticate()

	{




        $form_user=$this->username;

        $form_pass=$this->password;

        

        $user=CLIENTES::model()->findBySql("SELECT cod_cliente,cod_sec,fec_alta, nombre,apellido,email FROM CLIENTES WHERE usuario_web LIKE :usua AND password_web LIKE :passw) ",

            array(':usua' => "{$form_user}", ':passw' => "{$form_pass}"));

			

        

        if($user!=null)

        {

            if($user->USUARIO_WEB == null || $user->PASSWORD_WEB == null)

            {    

                $this->errorcode=self::ERROR_USERNAME_INVALID;


            }   

            elseif($user->TXT_USUARIO_WEB != $this->username)

            {

                $this->errorCode=self::ERROR_USERNAME_INVALID;

            }

    			

    		elseif($user->PASSWORD_WEB != $this->password)

            {

                $this->errorCode=self::ERROR_PASSWORD_INVALID;

            }

    			

    		else{

                $this->_nifcif=$user->TXT_INDFISCAL;

                $this->_codsec=$user->COD_SEC;

		$this->setPersistentStates(array(

			'username' => $this->username,

	                'password' => $this->password,

                        'usuario' => $user));




				

                Yii::app()->getSession()->add('usuario', $user);



No estoy seguro, pero creo primero que todo se está usando mal la función setPersistentStates… la documentación recomienda: http://www.yiiframework.com/doc/api/1.1/CWebUser#setState-detail

Adicionalmente, sería verificar que el config/main.php incluye "allowAutoLogin": http://www.yiiframework.com/doc/api/1.1/CWebUser#allowAutoLogin-detail