Heim > Backend-Entwicklung > PHP-Tutorial > Wie sichern Sie Ihre Web-MVC-Anwendung mit einer Zugriffskontrollliste (ACL)?

Wie sichern Sie Ihre Web-MVC-Anwendung mit einer Zugriffskontrollliste (ACL)?

DDD
Freigeben: 2024-12-25 21:21:15
Original
371 Leute haben es durchsucht

How to Secure Your Web MVC Application with an Access Control List (ACL)?

So implementieren Sie eine Zugriffskontrollliste in Ihrer Web-MVC-Anwendung

Implementieren einer ACL

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
Nach dem Login kopieren

Dieser Ansatz:

  • Kann auf jedes Objekt angewendet werden, nicht nur auf Controller.
  • Erzwingt die Zugriffskontrolle außerhalb des Zielobjekts. Einhaltung des Single-Responsibility-Prinzips.
  • Ermöglicht die Einfügung gesicherter Instanzen nahtlos.
  • Kann wie das Originalobjekt verpackt und verwendet werden.

Rollenbasierte Zugriffskontrolle für Objekte

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 )
Nach dem Login kopieren

Option 2 (Anfordern relevanter Details):

$command = array( get_class($this->target), $method );
$this->acl->isAllowed( $this->target->getPermissions(), $command )
Nach dem Login kopieren

Betrachten Sie diese Videos zum besseren Verständnis:

  • [Vererbung, Polymorphismus und Testen](Link)
  • [Nicht suchen Dinge!](Link)

Missverständnisse über Modelle

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage