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 接口和结果类的签名如下 −

AdaptorInterface

namespace Zend\Authentication\Adaptor; 
public function authenticate() { 
   // code 
}

结果类

namespace Zend\Authentication; 
class Result { 
   public function __construct($code, $identity, array $messages = []); 
}

Zend Framework 提供了一个默认实现,用于根据数据库、ldap、http basic 和 digest 凭据进行身份验证。Adaptor 进行身份验证,但不会为任何未来请求保留详细信息。

Class 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 概念的高级抽象,并有助于编写企业级应用程序。