Zend Framework - 身份认证

  • 简述

    身份验证是任何 Web 应用程序中最重要和必备的功能之一。Zend 框架提供了一个单独的组件来处理身份验证,该组件称为 zend-authentication
  • 安装身份验证组件

    可以使用以下composer命令安装身份验证组件。
    
    composer require zendframework/zend-authentication
    

    概念

    通常,开发人员编写一个 php 函数来针对数据源验证用户详细信息。身份验证完成后,身份验证详细信息将保留用于后续请求。Zend Framework推广了这个概念,并提供了两个类,解释如下 :

    类 1 Zend\Authentication\Adaptor\AdaptorInterface

    此类提供一个方法,authenticate来编写身份验证逻辑。身份验证方法返回 Zend\Authentication\Result类的实例。
    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基本和摘要凭据进行身份验证。适配器对将来的任何请求进行身份验证,但不保留详细信息。

    类 2 Zend\Authentication\AuthenticationService

    身份验证服务是主要组件,它使用已配置的适配器进行身份验证。身份验证完成后,它会保留身份验证详细信息并提供方法,hasIdentity()以检查标识是否可用,hasIdentity()以获取身份验证详细信息,clearIdentity()以清除身份验证详细信息。
    使用此身份验证服务的部分代码清单如下 −
    
    $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 概念的高级抽象,并有助于编写企业级应用程序。