CakePHP は、包括的な権限制御メカニズム、つまりアクセス制御リスト (ACL) を提供する人気のある PHP 開発フレームワークです。 ACL を使用すると、アプリケーション内の各ユーザーのアクセス権を制御するのに役立ちます。この記事では、CakePHP で ACL ロールを使用する方法について説明します。
まず、CakePHP で ACL コンポーネントを設定する必要があります。次のコードを app_controller.php に追加します。
//引入Auth Component var $components = array('Acl', 'Auth'); //初始化AclComponent function initialize() { $this->Acl->initAcl(); }
CakePHP で ACL を使用するには、ロールと権限ルールを作成する必要があります。まず、ACL ロールを作成する必要があります。コントローラーで次のコードを使用できます。
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')); }
上記のコードでは、ユーザーがフォームを送信すると、コードによってデータベースに新しい ACL ロールが作成されます。 $this->Acl->Aro->save() メソッドは、これに関連するすべての権限を処理し、新しいロールをデータベースに追加します。
次に、ロールに権限を割り当てる必要があります。これを行うには、データベースに ACL ノードを作成し、それを必要なロールに割り当てる必要があります。このようにして、ロールはノードにアクセスできるようになります。次のコードを使用して ACL ノードを作成できます:
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)); }
上記のコードでは、「Parent」という名前の空のノードを作成しました。このノードは関数を含まないプレースホルダーであり、その下に子ノードを追加できます。このノードの下に子ノードを追加すると、これらの子ノードは親ノードの権限を継承します。
最後に、ユーザーが特定の ACL ノードへのアクセス権限を持っているかどうかを確認するコードを記述する必要があります。このために、次のコードを使用できます。
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); } }
上記のコードでは、ユーザーが特定のアクセス権を持っているかどうかを確認する「check」というアクションを定義しました。これを行うには、次の変数を定義する必要があります。
最後に、$this->Acl->check() メソッドを使用して、指定されたロールが適切かどうかを確認します。特定のノードにアクセスする権限を持っています。ユーザーがこの権限を持っている場合、$access 変数は true に設定されます。ユーザーがアクセス権を持たない場合、変数は false になります。
この記事が、CakePHP での ACL ロールの使用方法の理解に役立つことを願っています。アプリケーション内でさまざまなユーザーのアクセス権を制御する必要がある場合、CakePHP の ACL 関数を使用することは非常に良い選択です。
以上がCakePHP で ACL ロールを使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。