Wie kann ich eine Zugriffskontrollliste in meiner Web-MVC-Anwendung implementieren und wie gehe ich mit dem rollenbasierten Benutzerzugriff um?
ACL-Implementierung
Das Dekoratormuster ist eine effektive Möglichkeit, ACLs zu implementieren, ohne die Controller-Klasse zu erweitern. So geht's:
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([$this->target, $method], $arguments); } } }
Sie können dies wie folgt verwenden:
$currentUser = ...; $controller = ...; $acl = new AccessControlList($currentUser); $controller = new SecureContainer($controller, $acl); $controller->actionIndex(); // ACL-protected controller methods
Benutzerrollenbasierter Zugriff
Für rollenbasierten Zugriff , beachten Sie Folgendes:
Überprüfung des Eigentümers eines Ressource:
Zum Beispiel:
$this->acl->isAllowed( $this->target->getPermissions(), // Get object permissions [$getter, $method] // Command );
Zugriff erzwingen Einschränkungen:
Zusätzliche Hinweise zu MVC:
Das obige ist der detaillierte Inhalt vonWie implementiert man Zugriffskontrolllisten (ACLs) und rollenbasierten Zugriff in einer Web-MVC-Anwendung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!