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);
      //
   }
}
廣告
© . All rights reserved.