Wie verwende ich ACL-Rollen in CakePHP?

PHPz
Freigeben: 2023-06-04 18:22:02
Original
847 Leute haben es durchsucht

CakePHP ist ein beliebtes PHP-Entwicklungsframework, das einen umfassenden Berechtigungskontrollmechanismus bietet, nämlich die Access Control List (ACL). Mithilfe von ACLs können Sie die Zugriffsrechte jedes Benutzers in Ihrer Anwendung steuern. In diesem Artikel erfahren Sie, wie Sie ACL-Rollen in CakePHP verwenden.

  1. Konfigurieren Sie die ACL-Komponente

Zuerst müssen wir die ACL-Komponente in CakePHP konfigurieren. Fügen Sie den folgenden Code in app_controller.php hinzu:

//引入Auth Component
var $components = array('Acl', 'Auth');

//初始化AclComponent
function initialize()
{
    $this->Acl->initAcl();
}      
Nach dem Login kopieren
  1. ACL-Rolle erstellen

Um ACL in CakePHP zu verwenden, müssen wir Rollen und Berechtigungsregeln erstellen. Zuerst müssen wir die ACL-Rolle erstellen. Sie können den folgenden Code in Ihrem Controller verwenden:

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

Wenn der Benutzer im obigen Code das Formular absendet, erstellt der Code eine neue ACL-Rolle in der Datenbank. Die Methode $this->Acl->Aro->save() verarbeitet alle damit verbundenen Berechtigungen und fügt die neue Rolle der Datenbank hinzu.

  1. Der Rolle Berechtigungen zuweisen

Als nächstes müssen wir der Rolle Berechtigungen zuweisen. Dazu müssen wir einen ACL-Knoten in der Datenbank erstellen und ihm die erforderliche Rolle zuweisen. Auf diese Weise kann die Rolle Zugriff auf den Knoten haben. Mit dem folgenden Code können wir einen ACL-Knoten erstellen:

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

Im obigen Code haben wir einen leeren Knoten mit dem Namen „Parent“ erstellt. Dieser Knoten ist ein Platzhalter, der keine Funktionen enthält, sodass wir darunter untergeordnete Knoten hinzufügen können. Wenn wir unter diesem Knoten untergeordnete Knoten hinzufügen, erben diese untergeordneten Knoten die Berechtigungen des übergeordneten Knotens.

  1. Benutzerberechtigungen prüfen

Abschließend müssen wir Code schreiben, um zu überprüfen, ob der Benutzer Zugriffsberechtigungen für einen bestimmten ACL-Knoten hat. Dazu können wir den folgenden Code verwenden:

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

Im obigen Code haben wir eine Aktion namens „check“ definiert, die prüft, ob der Benutzer über bestimmte Zugriffsrechte verfügt. Dazu müssen wir die folgenden Variablen definieren:

  • $aro: Gibt die zu prüfende ACL-Rolle an
  • $aco: Gibt den zu prüfenden ACL-Knoten an
  • $access: Gibt an, ob der Benutzer Zugriffsberechtigung hat der Knoten

Abschließend verwenden wir die Methode $this->Acl->check(), um zu prüfen, ob die angegebene Rolle die Berechtigung hat, auf einen bestimmten Knoten zuzugreifen. Wenn der Benutzer über diese Berechtigung verfügt, wird die Variable $access auf true gesetzt. Wenn der Benutzer keinen Zugriff hat, ist die Variable falsch.

Wir hoffen, dieser Artikel hat Ihnen geholfen zu verstehen, wie Sie ACL-Rollen in CakePHP verwenden. Wenn Sie die Zugriffsberechtigungen verschiedener Benutzer in Ihrer Anwendung steuern müssen, ist die Verwendung der ACL-Funktion in CakePHP eine sehr gute Wahl.

Das obige ist der detaillierte Inhalt vonWie verwende ich ACL-Rollen in CakePHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
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