Laravel授权


在前一章中,我们已经研究了Laravel中的认证过程。本章向您介绍Laravel的授权流程。

身份验证和授权之间的区别

在继续深入了解Laravel的授权过程之前,让我们了解身份验证和授权之间的区别。

身份验证中 ,Web应用程序或系统通过定义的凭证来验证用户。如果凭证按照记录进行匹配,则它们通过身份验证,否则它们不会。

当我们描述 授权 这个术语时,它只是描述验证,如果经过验证的用户可以访问为其定义的资源。换句话说,它验证了他们对请求和定义的资源的权利和许可。如果经过认证的用户可以按照定义访问资源,则表示他们已被授权。

因此, 认证 涉及检查用户证书的有效性,并且 授权 涉及检查经认证用户具有的资源上的权限和许可。

Laravel的授权机制

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

写盖茨和政策

门用于确定用户是否有权执行指定的操作。它们通常使用Gate facade 在 App / Providers / AuthServiceProvider.php中 定义。门也是为执行授权机制而声明的函数。

策略在数组中声明,并在使用授权机制的类和方法中使用。

以下代码行解释了如何使用门和策略在Laravel Web应用程序中授权用户。请注意,在本例中, 引导 功能用于授权用户。

<?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);
      //
   }
}