Laravel - 授权

  • 简述

    在上一章中,我们学习了 Laravel 中的身份验证过程。本章向您解释 Laravel 中的授权过程。
  • 身份验证和授权之间的区别

    在进一步了解 Laravel 中的授权过程之前,让我们先了解身份验证和授权之间的区别。
    authentication,系统或 Web 应用程序通过用户提供的凭据来识别其用户。如果它发现凭证有效,则它们通过身份验证,否则则不通过。
    authorization,系统或 Web 应用程序检查经过身份验证的用户是否可以访问他们尝试访问或发出请求的资源。换句话说,它检查他们对所请求资源的权利和权限。如果发现他们可以访问该资源,则意味着他们已被授权。
    因此,authentication涉及检查用户凭据的有效性,以及authorization涉及检查经过身份验证的用户拥有的资源的权利和权限。
  • Laravel 中的授权机制

    Laravel 提供了一种简单的授权机制,其中包含两种主要方式,即GatesPolicies.

    编写门和策略

    门用于确定用户是否有权执行指定的操作。它们通常定义在App/Providers/AuthServiceProvider.php使用门面。门也是为执行授权机制而声明的函数。
    策略在数组中声明,并在使用授权机制的类和方法中使用。
    以下代码行解释了如何使用 Gates 和 Policies 在 Laravel Web 应用程序中对用户进行授权。请注意,在此示例中,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);
          //
       }
    }