Shield 是 CodeIgniter 4 的綜合身份驗證和授權庫,可簡化應用程式中身份驗證的實作。
建立 Web 應用程式時,確保應用程式的身份驗證和授權安全至關重要。輸入 Shield,CodeIgniter 4 的官方驗證和授權框架。 Shield 的設計以靈活性和安全性為核心,它提供了一組強大的工具,可以滿足常見的身份驗證需求,同時允許開發人員根據需要進行擴展和自訂。
什麼是盾牌?
Shield 是專為 CodeIgniter 4 設計的身份驗證和授權框架。它不只是另一套安全工具;它更是一套安全工具。 Shield 提供了一個靈活的底座,可以輕鬆修改以滿足各種應用需求。無論您是建立簡單的使用者驗證流程還是具有角色和權限的更複雜的系統,Shield 都能滿足您的需求。
盾牌的重要特點
Shield 提供了廣泛的功能來滿足不同的身份驗證要求:
基於會話的身份驗證:具有「記住我」功能的傳統使用者名稱/密碼身份驗證。
無狀態身份驗證:支援存取權杖、HMAC SHA256 令牌和 JWT,以進行無狀態、基於 API 的身份驗證。
可選電子郵件驗證:帳戶註冊時可以進行電子郵件驗證,以增強安全性。
雙重認證 (2FA):可以啟用基於電子郵件的 2FA 來保護登入。
Magic Link 登入:為忘記密碼的使用者提供無密碼登入選項,在不影響安全性的情況下提供便利。
靈活的基於群組的存取控制:將其視為角色,但適應性更強; Shield 允許使用者被授予超出其群組設定的額外權限。
Auth Helper:一個簡單的實用程序,可以快速存取最常見的身份驗證操作。
可設定的設定管理:初始設定可以保存在程式碼庫中以進行版本控制,並使用設定庫在資料庫中動態更新。
使用者實體和使用者提供者:預先建立的使用者實體和使用者模型,您可以原樣使用或擴展以滿足您的應用程式的需求。
可擴展的控制器和視圖:Shield 的控制器和視圖可以開箱即用,也可以替換為您的自訂實作。
高度可配置:Shield 的各個方面都可以配置以滿足您的安全和功能需求。
盾牌的主要目標
Shield 的主要目標圍繞著靈活性、安全性和全面的功能。 Shield 的設計高度靈活,讓開發人員可以擴展或涵蓋框架的幾乎每個部分。這種適應性使開發人員能夠根據其特定的專案要求自訂 Shield,使其成為各種應用程式的多功能選擇。
安全性是 Shield 設計的核心,確保身份驗證和授權的各個方面都採用強大的安全措施來建構。作為專用的身份驗證庫,Shield 優先考慮保護使用者資料和存取控制、解決潛在漏洞並確保使用者的安全環境。
此外,Shield 提供了一套開箱即用的全面功能,旨在滿足許多常見的身份驗證需求,而無需進行大量配置。儘管功能集豐富,但 Shield 仍然保持簡單性,並允許開發人員在需要時輕鬆添加其他功能。這種靈活性、安全性和可擴展性的結合使 Shield 成為為其 CodeIgniter 4 應用程式尋求強大且適應性強的身份驗證解決方案的開發人員的絕佳選擇。
使用 Composer 建立 CodeIgniter 4 項目
現在讓我們在 Composer 的幫助下創建我們的第一個 CodeIgniter 4 專案。我假設您已經安裝了 PHP 或者您已經啟動並運行了 Xampp。或者您已準備好其他 PHP 設定以及 Composer 安裝。您也可以從其官方網站下載 CodeIgniter 4,然後解壓縮即可使用。但是,如果您選擇 Composer 路徑來建立 CodeIgniter 4 專案設置,則可以透過導航至要建立專案的目錄並使用此命令來完成此操作。
composer create-project codeigniter4/appstarter project-root
導航到您的專案目錄:
cd my-project
透過 Composer 安裝和設定 CodeIgniter 4 Shield 一旦您啟動並運行了 CodeIgniter 4 項目,就可以透過 Composer 安裝 Shield 軟體包了。以下是如何使用簡單的 Composer 命令來完成此操作。
composer require codeigniter4/shield
Command Setup
php spark shield:setup
透過電子郵件啟用帳戶激活
預設情況下,用戶註冊後就有一個可以使用的活動帳戶。您可以在身分驗證設定檔中啟用 Shield 內建的、基於電子郵件的啟動流程。
public array $actions = [
'register' => \CodeIgniter\Shield\Authentication\Actions\EmailActivator::class,
'login' => null,
];
啟用雙重認證
Turned off by default, Shield’s Email-based 2FA can be enabled by specifying the class to use in the Auth
config file.
public array $actions = [
'register' => null,
'login' => \CodeIgniter\Shield\Authentication\Actions\Email2FA::class,
];
保護頁面
預設情況下,Shield 不保護頁面。若要使某些頁面僅可供登入使用者存取,請設定會話控制器過濾器。
例如,如果您要限制所有路由(例如 localhost:8080/admin、localhost:8080/panel 等),則需要在 app/Config/Filters.php 檔案中新增下列程式碼。
public $globals = [
'before' => [
// ...
'session' => ['except' => ['login*', 'register', 'auth/a/*', 'logout']],
],
// ...
];