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.
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(); }
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')); }
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.
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)); }
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.
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); } }
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:
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!