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('@'),
),
);
}
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
}