ホームページ >PHPフレームワーク >Laravel >Laravel認可の使用法を徹底的に調査

Laravel認可の使用法を徹底的に調査

PHPz
PHPzオリジナル
2023-04-12 09:13:36594ブラウズ

Laravel は、承認を含む多くの強力な機能を備えた非常に人気のある PHP フレームワークです。この記事では、Laravel 認可の使用法について詳しく説明します。

承認とは何ですか?

Web アプリケーションでは、承認とは、ユーザーが特定のリソースにアクセスする権利、または特定の操作を実行する権利を持っているかどうかを判断するプロセスを指します。通常、認可は認証後に行われます。

Laravel 認可の基本

Laravel 認可を使用する基本的な考え方は、ポリシーを定義し、これらのポリシーを使用してユーザーが特定のリソースにアクセスする権限を持っているかどうかを判断することです。ポリシーは、ユーザーが特定のリソースにアクセスできるかどうかを確認するロジックを定義する単純な PHP クラスです。

ポリシーを定義する

ポリシーを作成するには、次のコマンドを実行します:

php artisan make:policy PostPolicy --model=Post

このコマンドは、Post Model で使用される PostPolicy という名前のクラス (ポリシー) を作成します。関連する。このクラスでは、ユーザーがモデルにアクセスできるかどうかを決定するメソッドを定義できます。

ユーザーが投稿を更新できるかどうかを決定するポリシーの例:

class PostPolicy
{
    use HandlesAuthorization;

    public function update(User $user, Post $post)
    {
        return $user->id === $post->user_id;
    }
}

このポリシーでは、更新メソッドは 2 つのパラメーター $user と $post を受け入れます。 $user は現在のユーザーのインスタンスであり、$post は更新される投稿のインスタンスです。このメソッドは、ユーザーが投稿を更新する権限を持っているかどうかを示すブール値を返します。この例では、現在のユーザーが投稿の作成者と同じである場合、更新が許可されます。

ポリシーの登録

ポリシーを使用するには、ポリシーを登録する必要があります。ポリシーは AuthServiceProvider クラスに登録できます。このクラスでは、policy メソッドを使用してモデルをポリシーにマップできます。

たとえば、次のコードは Post モデルを PostPolicy ポリシーにマップします。

protected $policies = [
    'App\Post' => 'App\Policies\PostPolicy',
];

ポリシーの使用

ポリシーを定義して登録したら、それを使用できます。あなたのアプリケーションで。ポリシーを使用するには、コントローラまたはその他の場所で authorize メソッドを使用します。

たとえば、次のコードは、現在のユーザーに特定の投稿を更新する権限があるかどうかを確認します:

public function update(Post $post)
{
    $this->authorize('update', $post);

    // The user is authorized to update the post...
}

上の例では、authorize メソッドは 2 つのパラメーターを受け入れます: ポリシー名 (この例では例: "update") と特定のリソースのインスタンス (この例では $post)。ユーザーがリソースにアクセスできる場合、アクセスは許可されます。それ以外の場合は、AuthorizationException がスローされます。

結論

Laravel 承認は非常に強力で、ユーザーが特定のリソースにアクセスする権限を持っているか、または特定のアクションを実行する権限を持っているかどうかを判断するために使用できます。この記事では、ポリシーの定義、ポリシーの登録、ポリシーの使用など、Laravel 承認の基本について説明しました。この記事が、Laravel の認証機能をより有効に活用するのに役立つことを願っています。

以上がLaravel認可の使用法を徹底的に調査の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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