Expulsar Un Usuario Al Vencerse La Sesión

hola, tengo un sistema y manejo la autenticación a través de srbac, ya he podido configurar los roles y las restricciones y me las arreglé para que sólo ciertos usuarios puedan ingresar al srbac. Tengo el siguiente problema, cuando un usuario intenta ingresar a una url sin estar logueado (probablemente porque se venció su sesión) sale un error de una variable no definida ¿cómo envío al usuario a iniciar sesión cuando esta se haya vencido?

por ahora hice esto en cada método:


if (!isset(Yii::app()->user->username)) {

   $this->redirect(array('site/index'));

}

¿hay alguna forma más óptima? intenté con accesRules pero nada


public function accessRules()

{

   return array(

      array(

         'allow', // allow authenticated user to perform 'create' and 'update' actions

         'actions'=>array('seguimiento','crearv'),

         'users'=>array('@'),

      ),

   );

}

Vamos si esto te sirve:




class Controller extends CController {

	protected function beforeAction($action) {

		Yii::log(__METHOD__ . ' isGuest: ' . (Yii::app()->getUser()->isGuest ? 'y' : 'n'));


		if (Yii::app()->getUser()->isGuest) {

			// site es la pagina principal, no se ha logeado.

                    if ($this->getId() !== 'site') {

                        $this->redirect($this->createUrl('/site/login'));

                    }

                }

	}

}


class EsteEsTuController extends Controller {

	// no necesitas incluir la validacion en cada metodo

}



No se tu amigo pero para administrar usuarios recomiendo ampliamente el modulo CRUGE es muy bueno y facil de implementar.

http://www.yiiframework.com/extension/cruge/

gracias por las respuestas, iré probando. Estoy usando srbac, pero hay algunas vistas que dan error.

Perfecto!,

No olvides compartir tus resultados.

aunque tengo srbac no sé por qué este problema, por ahora estoy usando un if con checkaccess al id del usuario en las vistas que molesta.