Laravel でアクセス制御リスト (ACL) 権限制御を実装する方法
概要:
アクセス制御リスト (ACL) は、一般的に使用される権限制御メカニズムです。これは Laravel フレームワークでも簡単に実装できます。この記事では、Laravel フレームワークに付属する認証および認可関数と拡張パッケージを使用して ACL 権限制御を実装する方法と、具体的なコード例を紹介します。
1. Laravel に付属する認証および認可関数を使用する
Laravel フレームワークに付属する認証および認可関数は、ACL 権限制御を実装するための基礎です。始める前に、Laravel フレームワークが正しくセットアップされ、データベース接続が構成されていることを確認してください。
ユーザー テーブルとロール テーブルの作成
Laravel フレームワークに付属するコマンド ライン ツール Artisan を使用して、ユーザー テーブルとロール テーブルを作成します。
php artisan make:migration create_users_table --create=users php artisan make:migration create_roles_table --create=roles
次に、生成された移行ファイルでテーブル構造を定義し、移行コマンドを実行してテーブルを生成します。
php artisan migrate
ユーザー モデルとロール モデルの作成
Laravel フレームワークに付属のコマンド ライン ツールである Artisan を使用して、ユーザー モデルとロール モデルを作成します。
php artisan make:model User php artisan make:model Role
生成されたモデル ファイルでモデルの関連付けとメソッドを定義します。
認証の実装config/auth.php
構成ファイルで認証ドライバーをデータベース ドライバーとして設定します。
'defaults' => [ 'guard' => 'web', 'passwords' => 'users', ],
次に、Laravel フレームワークに付属するコマンドライン ツール Artisan を使用して、認証関連のコントローラーとビューを作成します。
php artisan make:auth
生成された認証関連のコントローラーには、ログイン、登録、およびその他の関連メソッドがあります。
認可の実装app/Providers/AuthServiceProvider.php
ファイルに認可ポリシーを登録します。
use AppPoliciesRolePolicy; protected $policies = [ Role::class => RolePolicy::class, ];
次に、Laravel フレームワークに付属するコマンドライン ツール Artisan を使用して、承認ポリシーを作成します。
php artisan make:policy RolePolicy --model=Role
生成された認可ポリシー ファイルでは、関連する認可メソッドを定義できます。
2. 拡張パッケージ laravel-permission を使用して ACL 権限制御を実装する
laravel-permission は、ACL 権限制御を簡単に実装できる人気の拡張パッケージです。
laravel-permission 拡張パッケージをインストールする
Composer を使用して、laravel-permission 拡張パッケージをインストールします。
composer require spatie/laravel-permission
laravel-permission 拡張パッケージを構成しますconfig/app.php
構成ファイルの providers
配列に ServiceProvider を追加します。
SpatiePermissionPermissionServiceProvider::class,
次に、Laravel フレームワークに付属のコマンドライン ツールである Artisan を使用して、拡張パッケージの構成ファイルと移行ファイルを公開します。
php artisan vendor:publish --provider="SpatiePermissionPermissionServiceProvider" --tag="config" php artisan vendor:publish --provider="SpatiePermissionPermissionServiceProvider" --tag="migrations"
権限モデルとロールモデルは、生成された構成ファイルで設定できます。
権限テーブルとロール テーブルの作成
Laravel フレームワークに付属のコマンド ライン ツールである Artisan を使用して、権限テーブルとロール テーブルの移行ファイルを生成します。
php artisan make:migration create_permissions_table --create=permissions php artisan make:migration create_roles_table --create=roles
生成された移行ファイルでテーブル構造を定義し、移行コマンドを実行してテーブルを生成します。
php artisan migrate
laravel-permission 拡張パッケージを使用する
ユーザー モデルとロール モデルに SpatiePermissionTraitsHasRoles
特性を導入します。
use SpatiePermissionTraitsHasRoles;
次に、HasRoles
トレイトを使用して、ユーザー モデルとロール モデルの関連付けとメソッドを定義します。
コントローラーの authorize
メソッドを使用して認可判定を行うことができます。
use IlluminateSupportFacadesGate; if (Gate::denies('edit', $post)) { abort(403, 'Unauthorized action.'); }
ビュー ファイルで @can
ディレクティブを使用して権限を決定することもできます。
@can('edit', $post) {{-- Edit button --}} @endcan
結論:
この記事では、Laravel フレームワークでアクセス制御リスト (ACL) 権限制御を実装する方法を紹介します。まず、Laravel独自の認証・認可関数を利用してユーザーテーブルとロールテーブルを定義し、認証・認可を実装します。次に、laravel-permission 拡張パッケージを使用して、ACL 権限制御をさらに実装します。この記事が、Laravel での ACL 権限制御の実装に役立つことを願っています。
以上がLaravel でアクセス制御リスト (ACL) 権限制御を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。