Verwenden eines Decorator-Musters
Ein Dekorationsmuster beinhaltet das Umhüllen eines Objekts in ein anderes Objekt und bietet so eine verbesserte Funktionalität. Es befasst sich mit dem Problem der Erweiterbarkeit, ohne die ursprüngliche Klasse zu ändern. Hier ist ein Beispiel:
class SecureContainer { protected $target; protected $acl; public function __construct( $target, $acl ) { $this->target = $target; $this->acl = $acl; } public function __call( $method, $arguments ) { if ( method_exists( $this->target, $method ) &&& $this->acl->isAllowed( get_class($this->target), $method ) ){ return call_user_func_array( array( $this->target, $method ), $arguments ); } } } $acl = new AccessControlList( $currentUser ); $controller = new SecureContainer( $controller, $acl ); $controller->actionIndex(); // Execute method with ACL checking
Dieser Ansatz:
So überprüfen Sie den Zugriff für Domänenobjekte mit definierten Eigentümern:
Option 1 (Gesetz von Demeter bewusst):
$this->acl->isAllowed( get_class($this->target), $method )
Option 2 (Anfordern relevanter Details):
$command = array( get_class($this->target), $method ); $this->acl->isAllowed( $this->target->getPermissions(), $command )
Betrachten Sie diese Videos zum besseren Verständnis:
Modell in MVC ist keine Klasse. Es umfasst eine Ebene mit:
Domänen-Geschäftslogik: Beschäftigt sich mit Berechnung, Bedingungsprüfung und Implementierung von Geschäftsregeln.
Datenzugriff und -speicherung: Verarbeitet datenbezogene Vorgänge, wie z. B. Datenbankinteraktionen.
Dienste: Abstraktionen, die den Controller vereinfachen Code, der oft mit Domänenobjekten, Komponenten und Mappern jongliert.
Das obige ist der detaillierte Inhalt vonWie sichern Sie Ihre Web-MVC-Anwendung mit einer Zugriffskontrollliste (ACL)?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!