Comment puis-je implémenter une liste de contrôle d'accès dans mon application Web MVC et comment gérer l'accès basé sur les rôles des utilisateurs ?
Implémentation d'ACL
Le modèle décorateur est un moyen efficace d'implémenter des ACL sans étendre la classe Controller. Voici comment :
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); } } }
Vous pouvez l'utiliser comme suit :
$currentUser = ...; $controller = ...; $acl = new AccessControlList($currentUser); $controller = new SecureContainer($controller, $acl); $controller->actionIndex(); // ACL-protected controller methods
Accès basé sur le rôle de l'utilisateur
Pour un accès basé sur le rôle , considérez les éléments suivants :
Vérification du propriétaire d'un Ressource :
Par exemple :
$this->acl->isAllowed( $this->target->getPermissions(), // Get object permissions [$getter, $method] // Command );
Application de l'accès Restrictions :
Remarques supplémentaires sur MVC :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!