
- Zend Framework 教程
- Zend Framework - 首頁
- Zend Framework - 簡介
- Zend Framework - 安裝
- 框架應用
- Zend Framework - MVC 架構
- Zend Framework - 概念
- Zend Framework - 服務管理器
- Zend Framework - 事件管理器
- Zend Framework - 模組系統
- 應用結構
- Zend Framework - 建立模組
- Zend Framework - 控制器
- Zend Framework - 路由
- Zend Framework - 檢視層
- Zend Framework - 佈局
- 模型與資料庫
- 不同的資料庫
- 表單與驗證
- Zend Framework - 檔案上傳
- Zend Framework - Ajax
- Cookie 管理
- 會話管理
- Zend Framework - 身份驗證
- 郵件管理
- Zend Framework - 單元測試
- Zend Framework - 錯誤處理
- Zend Framework - 工作示例
- Zend Framework 有用資源
- Zend Framework - 快速指南
- Zend Framework - 有用資源
- Zend Framework - 討論
Zend Framework - 身份驗證
身份驗證是任何 Web 應用中最重要和必不可少的特性之一。Zend Framework 提供了一個單獨的元件來處理身份驗證,稱為zend-authentication。
安裝身份驗證元件
可以使用以下Composer命令安裝身份驗證元件。
composer require zendframework/zend-authentication
概念
通常,開發人員會編寫一個 PHP 函式來根據資料來源驗證使用者詳細資訊。身份驗證完成後,身份驗證詳細資訊將被持久化以用於後續請求。Zend Framework 將此概念泛化,並提供了兩個類,如下所述:
類 1 Zend\Authentication\Adaptor\AdaptorInterface
此類提供了一個單一方法authenticate來編寫身份驗證邏輯。authenticate 方法返回Zend\Authentication\Result類的例項。
此Result物件儲存身份驗證狀態;如果身份驗證成功則為身份,如果身份驗證失敗則為錯誤訊息。authenticate 介面和 result 類的簽名如下:
AdaptorInterface
namespace Zend\Authentication\Adaptor; public function authenticate() { // code }
Result 類
namespace Zend\Authentication; class Result { public function __construct($code, $identity, array $messages = []); }
Zend Framework 提供了針對資料庫、LDAP、HTTP 基本和摘要憑據進行身份驗證的預設實現。Adaptor進行身份驗證,但不持久化任何未來請求的詳細資訊。
類 2 Zend\Authentication\AuthenticationService
AuthenticationService 是主要元件,它使用已配置的介面卡進行身份驗證。身份驗證完成後,它會持久化身份驗證詳細資訊,並提供方法hasIdentity()來檢查身份是否存在,getIdentity()來獲取身份驗證詳細資訊,以及clearIdentity()來清除身份驗證詳細資訊。
使用此 AuthenticationService 的部分程式碼清單如下:
$adap = new Adapter($username, $password); $auth = new AuthenticationService(); $result = $auth->authenticate($adap); if($result->isValid) { $identity = $auth->getIdentity(); } else { // process $result->getMessages() } // clear $auth->clearIdentity();
與授權相關的部分打包為兩個單獨的模組,分別是:zend-permissions-acl和zend-permissions-rbac。zend-permissions-acl 基於訪問控制列表,zend-permissions-rbac 基於基於角色的訪問控制列表。它們提供了 ACL 和 RBAC 概念的高階抽象,並有助於編寫企業級應用程式。