Yii framework: ¿cómo especificar las mismas reglas de acceso para todos los controladores del módulo?

StackOverflow https://stackoverflow.com/questions/1612472

  •  06-07-2019
  •  | 
  •  

Pregunta

Creé el módulo para operaciones específicas de administración. No quiero escribir las mismas reglas de acceso para cada controlador, no es un estilo de codificación bonito.

¿Fue útil?

Solución

Una solución sería extender un Controlador BaseClass común para cada clase autenticada.

De esta manera puedes escribir una vez.

Otros consejos

El módulo es como una sub-aplicación con una estructura de directorios separada. No es responsable de filtrar o verificar el permiso.

La única solución vital es definir una nueva abstracción como propuso Ismael.

class ExtendedController
{
    public function rules()
    {
        return array_merge(parent::rules(), array(
           // your rules
        ));
    }
}

Las opciones de Ismael y pestaa son muy buenas, incluso de implementación rápida; sin embargo, siempre recomiendo alternativas más poderosas como el modelo RBAC. Puede encontrar una muy buena GUI para Yii RBAC en http://code.google.com/p/srbac/

Esto me funcionó:

class extendedController extends baseController
{
    public function accessRules()
    {
        return array_merge(

            // This controller's rules are added first:
            // Allow all users to call the 'hello' action.
            array(
                array('allow',
                    'actions'=>array('hello'), 
                    'users'=>array('*'),
                ),
            ),

            // BaseController rules are added last, especially
            // if the last rule in the baseController denies all
            // users that were not allowed yet.
            parent::accessRules()
        );
    }

    public function actionHello()
    {
        echo('Hello!');
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top