Laravel-承認

前の章では、Laravelでの認証プロセスについて学習しました。この章では、Laravelでの認証プロセスについて説明します。

認証と承認の違い

Laravelでの承認プロセスについてさらに学ぶ前に、認証と承認の違いを理解しましょう。

authentication、システムまたはWebアプリケーションは、ユーザーが提供する資格情報を通じてユーザーを識別します。資格情報が有効であることが判明した場合、それらは認証されているか、そうでない場合はそうではありません。

authorization、システムまたはWebアプリケーションは、認証されたユーザーがアクセスしようとしているリソースにアクセスできるかどうか、または要求を行うことができるかどうかを確認します。つまり、要求されたリソースに対する権限とアクセス許可を確認します。リソースにアクセスできることがわかった場合、それはそれらが許可されていることを意味します。

したがって、 authentication ユーザー資格情報の有効性の確認を含み、 authorization 認証されたユーザーが持っているリソースに対する権限とアクセス許可を確認する必要があります。

Laravelの承認メカニズム

Laravelは、2つの主要な方法を含む承認のためのシンプルなメカニズムを提供します。 Gates そして Policies

ゲートとポリシーの作成

ゲートは、ユーザーが指定されたアクションの実行を許可されているかどうかを判別するために使用されます。それらは通常、App/Providers/AuthServiceProvider.phpゲートファサードを使用します。ゲートは、承認メカニズムを実行するために宣言された関数でもあります。

ポリシーは配列内で宣言され、承認メカニズムを使用するクラスおよびメソッド内で使用されます。

次のコード行は、ゲートとポリシーを使用してLaravelWebアプリケーションでユーザーを承認する方法を説明しています。この例では、boot 関数は、ユーザーを承認するために使用されます。

<?php

namespace App\Providers;

use Illuminate\Contracts\Auth\Access\Gate as GateContract;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;

class AuthServiceProvider extends ServiceProvider{
   /**
      * The policy mappings for the application.
      *
      * @var array
   */
   
   protected $policies = [
      'App\Model' => 'App\Policies\ModelPolicy',
   ];
   
   /**
      * Register any application authentication / authorization services.
      *
      * @param \Illuminate\Contracts\Auth\Access\Gate $gate
      * @return void
   */
   
   public function boot(GateContract $gate) {
      $this->registerPolicies($gate);
      //
   }
}