Yii framework - comment spécifier les mêmes règles d'accès pour tous les contrôleurs du module?

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

  •  06-07-2019
  •  | 
  •  

Question

J'ai créé un module pour des opérations spécifiques à l'administrateur. Je ne veux pas écrire les mêmes règles d'accès pour tous les contrôleurs, ce n'est pas un style de code assez joli.

Était-ce utile?

La solution

Une solution consisterait à étendre un contrôleur BaseClass commun pour chaque classe authentifiée.

Ainsi, vous pourrez écrire une fois.

Autres conseils

Le module est comme une sous-application avec une structure de répertoires séparée. Il n'est pas responsable du filtrage ou de la vérification de l'autorisation.

La seule solution vitale consiste à définir une nouvelle abstraction comme proposé par Ismael.

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

Les choix d’Ismael et de Pestaa sont très bons, même rapides à mettre en œuvre. Néanmoins, je recommande toujours des alternatives plus puissantes comme le modèle RBAC. Vous pouvez trouver une très bonne interface graphique pour Yii RBAC dans http://code.google.com/p/srbac/

Cela a fonctionné pour moi:

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!');
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top