- Laravel 教程
- Laravel - 首頁
- Laravel - 概述
- Laravel - 安裝
- Laravel - 應用結構
- Laravel - 配置
- Laravel - 路由
- Laravel - 中介軟體
- Laravel - 名稱空間
- Laravel - 控制器
- Laravel - 請求
- Laravel - Cookie
- Laravel - 響應
- Laravel - 檢視
- Laravel - Blade 模板
- Laravel - 重定向
- Laravel - 資料庫操作
- Laravel - 錯誤與日誌
- Laravel - 表單
- Laravel - 國際化
- Laravel - Session
- Laravel - 驗證
- Laravel - 檔案上傳
- Laravel - 傳送郵件
- Laravel - Ajax
- Laravel - 錯誤處理
- Laravel - 事件處理
- Laravel - Facades
- Laravel - Contracts
- Laravel - CSRF 保護
- Laravel - 身份驗證
- Laravel - 授權
- Laravel - Artisan 命令列
- Laravel - 加密
- Laravel - 雜湊
- 理解發布流程
- Laravel - 客人使用者許可權
- Laravel - Artisan 命令
- Laravel - 分頁自定義
- Laravel - Dump Server
- Laravel - Action URL
- Laravel 有用資源
- Laravel - 快速指南
- Laravel - 有用資源
- Laravel - 討論
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);
//
}
}
廣告