CakePHP は、多くの便利な機能を備えた高速で柔軟な PHP Web 開発フレームワークであり、その 1 つがアクセス コントロール リスト (ACL) です。 ACL を使用すると、どのユーザーがアプリケーションのどの部分にアクセスできるかを定義できます。ただし、初心者の開発者やアクセス制御リストに慣れていない場合は、少し混乱するかもしれません。この記事では、CakePHP で ACL を使用する方法を説明します。
アクセス制御リストとは何ですか?
アクセス制御リストは、どのユーザーがシステム内のどのリソースにアクセスできるかを制限するセキュリティ メカニズムです。 ACL は、コントローラー、アクション、ビューなど、アプリケーションのすべてのレベルに適用できます。 ACL は通常、ロールと権限という 2 つの側面で構成されます。ロールはユーザーのグループであり、権限はロールが実行できる内容を定義するルールです。
ステップ 1: データベース テーブルをセットアップする
CakePHP で ACL を使用するには、ユーザー、ロール、および権限の情報を保存するデータベース テーブルをセットアップする必要があります。簡単なアプローチは、アプリケーションにユーザー、ロール、権限という 3 つのテーブルを作成することです。これらのテーブルの SQL テーブル作成ステートメントは次のとおりです。
CREATE TABLE ユーザー (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) UNIQUE, password CHAR(40), role_id INT UNSIGNED
);
CREATE TABLE ロール (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) UNIQUE
);
CREATE TABLE 権限 (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) UNIQUE
);
ステップ 2: モデルの作成
次に、テーブルと対話するモデルを作成する必要があります。データベース内で。 CakePHP では、コマンド ライン ツールを使用してモデル コードを生成できます。たとえば、ユーザー モデルを作成するには、次のコマンドを実行します。
bin/cake Bake model Users
次に、必要に応じて、生成されたモデル ファイルを編集します。この例では、ロール モデルにリンクされているユーザー モデルのコードを追加する必要があります。
class User extends AppModel {
public $belongsTo = array('Role');
}
次に、以下が必要です。ロールを作成し、権限も同様の方法でモデル化されます。
ステップ 3: ACL コンポーネントを構成する
次に、ACL コンポーネントを構成する必要があります。 CakePHP では、ACL コンポーネントがコントローラー コンポーネントとして利用可能です。次のコードを AppController に追加します:
public $components = array(
'Acl', 'Auth' => array( 'authorize' => array( 'Actions' => array('actionPath' => 'controllers') ) )
);
これにより、ACL および認証コンポーネントが有効になり、「アクション」認可が定義されます。タイプ。 「actionPath」オプションは、コントローラーアクションへのパスを指定します。
ステップ 4: ユーザーのロールと権限を作成する
次に、データベース内の各ユーザーにロールと対応する権限を作成する必要があります。これは、ACL コンポーネントの AclComponent::allow() メソッドを通じて実行できます。以下に例を示します。
// John が PostsController の追加および編集アクションにアクセスできるようにします。
$this->Acl->allow(array('User' => 'John' ), 'controllers/Posts/add');
$this->Acl->allow(array('User' =>'John'), 'controllers/Posts/edit');
これは、アプリケーションの初期化中、または各ユーザーが初めてログインするときに実行できます。
ステップ 5: ユーザー権限を確認する
データベース内の各ユーザーにロールと権限を割り当てたら、ACL コンポーネントの AclComponent::check() メソッドを使用して確認できます。ユーザーはアクションにアクセスできます。例:
if ($this->Acl->check(array('User' => 'John'), 'controllers/Posts/add')) {
// John has permissions to access the add action in the Posts controller
} else {
// John does not have permissions to access the add action in the Posts controller
}
概要
上記は、CakePHP で ACL を使用する方法の基本的な知識です。 ACL の機能と、より高いレベルのアクセス制御をロールと権限に割り当てる方法の詳細については、CakePHP ドキュメントの「アクセス制御リスト」セクションを参照してください。 ACL を使用すると、アプリケーションを保護し、許可されたユーザーのみが機密情報にアクセスできるようにすることができます。
以上がCakePHP で ACL (アクセス制御リスト) を使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。