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

广告