📜  Zend框架-身份验证

📅  最后修改于: 2020-10-16 07:46:28             🧑  作者: Mango


身份验证是任何Web应用程序中最重要且必不可少的功能之一。 Zend Framework提供了一个单独的组件来处理身份验证,称为zend-authentication

安装身份验证组件

可以使用以下Composer命令安装身份验证组件。

composer require zendframework/zend-authentication

概念

通常,开发人员编写php函数以根据数据源对用户详细信息进行身份验证。身份验证完成后,身份验证详细信息将保留用于后续请求。 Zend Framework概括了这个概念,并提供了两个类,下面将对其进行解释-

1类Zend \ Authentication \ Adaptor \ AdaptorInterface

此类提供一个单一方法,进行身份验证以编写身份验证逻辑。 authenticate方法返回Zend \ Authentication \ Result类的实例。

Result对象保存身份验证状态;身份验证(如果身份验证成功)和错误消息(如果身份验证失败)。 authenticate接口和结果类的签名如下:

适配器接口

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