Comment utiliser les rôles ACL dans CakePHP ?

PHPz
Libérer: 2023-06-04 18:22:02
original
841 Les gens l'ont consulté

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.

  1. Configurer le composant ACL

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();
}      
Copier après la connexion
  1. Créer un rôle ACL

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'));
}
Copier après la connexion

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.

  1. Attribuer des autorisations au rôle

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));
}
Copier après la connexion

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.

  1. Vérification des autorisations de l'utilisateur

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);
   }
}
Copier après la connexion

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 :

  • $aro : Indique le rôle ACL à vérifier
  • $aco : Indique le nœud ACL à vérifier
  • $access : Indique si l'utilisateur a l'autorisation d'accéder le nœud

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal