Zend 框架 - 身份验证


身份验证是任何 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对象保存身份验证状态;如果身份验证成功,则显示身份;如果身份验证失败,则显示错误消息。验证接口和结果类的签名如下 -

适配器接口

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

结果类

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

Zend 框架提供了一个默认实现来根据数据库、ldap、http 基本和摘要凭证进行身份验证。适配器进行身份验证但不会保留任何未来请求的详细信息。

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