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-aclzend-permissions-rbac。zend-permissions-acl 基於訪問控制列表,zend-permissions-rbac 基於基於角色的訪問控制列表。它們提供了 ACL 和 RBAC 概念的高階抽象,並有助於編寫企業級應用程式。

廣告