Laravel でアクセス制御リスト (ACL) 権限制御を実装する方法

PHPz
リリース: 2023-11-02 10:25:54
オリジナル
1185 人が閲覧しました

Laravel でアクセス制御リスト (ACL) 権限制御を実装する方法

Laravel でアクセス制御リスト (ACL) 権限制御を実装する方法

概要:
アクセス制御リスト (ACL) は、一般的に使用される権限制御メカニズムです。これは Laravel フレームワークでも簡単に実装できます。この記事では、Laravel フレームワークに付属する認証および認可関数と拡張パッケージを使用して ACL 権限制御を実装する方法と、具体的なコード例を紹介します。

1. Laravel に付属する認証および認可関数を使用する
Laravel フレームワークに付属する認証および認可関数は、ACL 権限制御を実装するための基礎です。始める前に、Laravel フレームワークが正しくセットアップされ、データベース接続が構成されていることを確認してください。

  1. ユーザー テーブルとロール テーブルの作成
    Laravel フレームワークに付属するコマンド ライン ツール Artisan を使用して、ユーザー テーブルとロール テーブルを作成します。

    php artisan make:migration create_users_table --create=users php artisan make:migration create_roles_table --create=roles
    ログイン後にコピー

    次に、生成された移行ファイルでテーブル構造を定義し、移行コマンドを実行してテーブルを生成します。

    php artisan migrate
    ログイン後にコピー
    ログイン後にコピー
  2. ユーザー モデルとロール モデルの作成
    Laravel フレームワークに付属のコマンド ライン ツールである Artisan を使用して、ユーザー モデルとロール モデルを作成します。

    php artisan make:model User php artisan make:model Role
    ログイン後にコピー

    生成されたモデル ファイルでモデルの関連付けとメソッドを定義します。

  3. 認証の実装
    config/auth.php構成ファイルで認証ドライバーをデータベース ドライバーとして設定します。

    'defaults' => [ 'guard' => 'web', 'passwords' => 'users', ],
    ログイン後にコピー

    次に、Laravel フレームワークに付属するコマンドライン ツール Artisan を使用して、認証関連のコントローラーとビューを作成します。

    php artisan make:auth
    ログイン後にコピー

    生成された認証関連のコントローラーには、ログイン、登録、およびその他の関連メソッドがあります。

  4. 認可の実装
    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 権限制御を簡単に実装できる人気の拡張パッケージです。

  1. laravel-permission 拡張パッケージをインストールする
    Composer を使用して、laravel-permission 拡張パッケージをインストールします。

    composer require spatie/laravel-permission
    ログイン後にコピー
  2. 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"
    ログイン後にコピー

    権限モデルとロールモデルは、生成された構成ファイルで設定できます。

  3. 権限テーブルとロール テーブルの作成
    Laravel フレームワークに付属のコマンド ライン ツールである Artisan を使用して、権限テーブルとロール テーブルの移行ファイルを生成します。

    php artisan make:migration create_permissions_table --create=permissions php artisan make:migration create_roles_table --create=roles
    ログイン後にコピー

    生成された移行ファイルでテーブル構造を定義し、移行コマンドを実行してテーブルを生成します。

    php artisan migrate
    ログイン後にコピー
    ログイン後にコピー
  4. 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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!