CakePHP est un framework de développement PHP populaire qui fournit un mécanisme complet de contrôle des autorisations, à savoir une liste de contrôle d'accès (ACL). L'utilisation des ACL peut vous aider à contrôler les droits d'accès de chaque utilisateur dans votre application. Dans cet article, nous verrons comment utiliser les rôles ACL dans CakePHP.
Tout d'abord, nous devons configurer le composant ACL dans CakePHP. Ajoutez le code suivant dans app_controller.php :
//引入Auth Component var $components = array('Acl', 'Auth'); //初始化AclComponent function initialize() { $this->Acl->initAcl(); }
Pour utiliser l'ACL dans CakePHP, nous devons créer des rôles et des règles d'autorisation. Tout d’abord, nous devons créer le rôle ACL. Vous pouvez utiliser le code suivant dans votre contrôleur :
function addRole($parent=null){ if(!empty($this->data)){ $this->Acl->Aro->create(); $this->data['Aro']['model'] = 'Role'; if($this->Acl->Aro->save($this->data)){ $this->Session->setFlash(__('The Role has been saved.', true)); $this->redirect(array('action'=>'index')); } else { $this->Session->setFlash(__('The Role could not be saved. Please, try again.', true)); } } $parent = $this->Acl->Aro->findById($parent['Aro']['id']); $this->set(compact('parent')); }
Dans le code ci-dessus, lorsque l'utilisateur soumet le formulaire, le code créera un nouveau rôle ACL dans la base de données. La méthode $this->Acl->Aro->save() gérera toutes les autorisations liées à cela et ajoutera le nouveau rôle à la base de données.
Ensuite, nous devons attribuer des autorisations au rôle. Pour ce faire, nous devons créer un nœud ACL dans la base de données et l'attribuer au rôle requis. De cette façon, le rôle peut avoir accès au nœud. Nous pouvons créer un nœud ACL en utilisant le code suivant :
function addNode(){ //加入‘Parent’节点,我们可以在此下添加子节点 $parentNode = $this->Acl->Aro->node('Role', null); $this->Acl->Aro->create(array('parent_id'=>$parentNode[0]['Aro']['id'], 'model'=>'Role','foreign_key'=>3)); // role id $this->Acl->Aro->save(); $this->Session->setFlash(__('Node saved', true)); }
Dans le code ci-dessus, nous avons créé un nœud vide nommé "Parent". Ce nœud est un espace réservé qui ne contient aucune fonction, ce qui nous permet d'ajouter des nœuds enfants en dessous. Lorsque nous ajoutons des nœuds enfants sous ce nœud, ces nœuds enfants hériteront des autorisations du nœud parent.
Enfin, nous devons écrire du code pour vérifier si l'utilisateur dispose des autorisations d'accès à un certain nœud ACL. Pour ce faire, nous pouvons utiliser le code suivant :
function check(){ $this->set('aro', $this->Acl->Aro->find('list', array('conditions'=>array('Aro.model'=>'Role')))); $this->set('aco', $this->Acl->Aco->find('list')); if(!empty($this->data)) { $aro = $this->data['Permission']['aro']; $aco = $this->data['Permission']['aco']; $access = $this->Acl->check($aro, $aco); $this->set('access', $access); } }
Dans le code ci-dessus, nous avons défini une action appelée "check" qui va vérifier si l'utilisateur dispose de droits d'accès spécifiques. Pour ce faire, nous devons définir les variables suivantes :
Enfin, nous utilisons la méthode $this->Acl->check() pour vérifier si le rôle spécifié est autorisé à accéder à un nœud spécifique. Si l'utilisateur dispose de cette autorisation, la variable $access sera définie sur true. Si l'utilisateur n'y a pas accès, la variable sera fausse.
Nous espérons que cet article vous a aidé à comprendre comment utiliser les rôles ACL dans CakePHP. Lorsque vous avez besoin de contrôler les droits d'accès des différents utilisateurs de votre application, utiliser la fonction ACL de CakePHP est un très bon choix.
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!