framework Yii - como especificar as mesmas regras de acesso para todos os controladores do módulo?

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

  •  06-07-2019
  •  | 
  •  

Pergunta

Eu criei módulo para operações de administração específicos. Eu não quero escrever as mesmas regras de acesso para cada controlador, não é bonito estilo de codificação.

Foi útil?

Solução

Uma solução seria estender um controlador comum ClasseBase para cada classe autenticado.

Desta forma, você pode escrever uma vez.

Outras dicas

Módulo é como um sub-aplicação com estrutura de directório separada. Não é responsável por filtrar ou verificação de permissão.

A única solução vital é definir uma nova abstração como Ismael proposto.

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

Ismael e escolhas pestaa são muito bons, mesmo rápida de implementar, no entanto, eu recomendo sempre alternativas mais poderosas como modelo RBAC. Você pode encontrar uma muito boa interface gráfica para Yii RBAC em http://code.google.com/p/srbac/

Isso funcionou para mim:

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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top