ホームページ >PHPフレームワーク >Laravel >Laravel でアクセス制御リスト (ACL) 権限制御を実装する方法

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

PHPz
PHPzオリジナル
2023-11-02 10:25:541280ブラウズ

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。