プログラム開発の情報や、雑記を投稿しているサイトです。

CakePHP4 | Authorization による ユーザーアクセス制御

CakePHP4 には、ログイン処理を簡単に組み込める、Authenticationというユーザー認証のプラグインがあります。

しかしながら、authentication は、ログインができるか、できないか、というシンプルな機能であるため、

ユーザーごとに、ページのアクセス制御などができません。

これを実現するためには、Authorization を利用することで実現することができます。

日本のページがないので、わかりにくい部分もありますが、とても簡単に、ユーザーごとのアクセス制御ができます。

authorization のインストール

プラグインの設定

src/Application.php に以下の内容を追記します。

Application クラスの修正

src/Application.php に以下の内容を追記します。

AuthorizationServiceProviderInterface を implements するように追記します。

middleware() に、以下の内容を追記します。

src/Application.php に、以下のメソッドを追記します。

src/Controller/AppController.php に、下記の内容を追記します。

ここまでで、必要な初期設定は完了となります。

アクセス制御

各メソッドに、アクセス制御を追記します。

例えば、edit に アクセスする権限をチェックする場合には、以下のようになります。

Policy の作成

CakePHP では、Policy を利用して、アクセス制御を行います。

src/Policy に、各Policyファイルを置いていきます。

Userの場合には、下記の場所に保存します。

src/Policy/MemoPolicy.php

bake でも生成することができます。

Policy メソッドを追記します。

Policy Scopes の生成

アクセス制御で、さらにデータごとに、制御する場合には、Policy Scopes を生成します。

コントローラーでは、以下のように利用します。

CakePHP Authorization 2.x Cookbook

公式サイトには、日本語のページがありませんが、簡単に一読されると理解が深まると思います。

https://book.cakephp.org/authorization/2/en/index.html#

おススメ書籍

山田 典明 (著), 長澤 賢 (著), 関口 勇樹 (著)


国本大悟 (著), 須藤秋良 (著), 株式会社フレアリンク (監修)