身份验证是任何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-acl和zend-permissions-rbac。zend-permissions-acl基于访问控制列表,而zend-permissions-rbac基于基于角色的访问控制列表。它们提供了ACL和RBAC概念的高级抽象,并有助于编写企业级应用程序。
作者:terry,如若转载,请注明出处:https://www.web176.com/zendframework/265.html