Yü Rahmen - wie die gleichen Zugangsregeln für alle Steuerungen des Moduls angeben?

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

  •  06-07-2019
  •  | 
  •  

Frage

Ich habe Modul für die Admin-spezifische Operationen. Ich will nicht die gleichen Zugangsregeln für jeden Controller schreiben, es ist nicht schön Codierstil.

War es hilfreich?

Lösung

Eine Lösung wäre, einen gemeinsamen Baseclass-Controller erweitern für jede Klasse authentifiziert.

Auf diese Weise können einmal schreiben kann.

Andere Tipps

Modul ist wie eine Unteranwendung mit getrennter Verzeichnisstruktur. Es ist nicht verantwortlich für die Filterung oder die Überprüfung für die Erlaubnis.

Die einzige lebenswichtige Lösung ist eine neue Abstraktion zu definieren, wie Ismael vorgeschlagen.

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

Ismael und pestaa Auswahl sehr gut sind auch schnell zu implementieren, doch immer ich empfehlen leistungsfähigeren Alternativen wie RBAC-Modell. Sie können eine sehr gute grafische Oberfläche für Yü RBAC in http://code.google.com/p/srbac/

Das funktioniert für mich:

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!');
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top