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 サイトの他の関連記事を参照してください。