Laravel - 授权



在上一章中,我们学习了 Laravel 中的身份验证过程。本章将解释 Laravel 中的授权过程。

身份验证和授权的区别

在进一步学习 Laravel 中的授权过程之前,让我们了解一下身份验证和授权的区别。

身份验证中,系统或 Web 应用程序通过用户提供的凭据来识别用户。如果发现凭据有效,则对其进行身份验证,否则则不进行身份验证。

授权中,系统或 Web 应用程序检查已验证的用户是否可以访问他们试图访问或请求的资源。换句话说,它检查他们对请求资源的权限。如果发现他们可以访问这些资源,则表示他们已获得授权。

因此,身份验证涉及检查用户凭据的有效性,而授权则涉及检查已验证用户对资源的权限。

Laravel 中的授权机制

Laravel 提供了一个简单的授权机制,包含两种主要方式,即门(Gates)策略(Policies)

编写门和策略

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

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

以下几行代码解释了如何在 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);
      //
   }
}
广告