- Zend Framework 教程
- Zend Framework - 首页
- Zend Framework - 简介
- Zend Framework - 安装
- 框架应用
- Zend Framework - MVC 架构
- Zend Framework - 概念
- Zend Framework - 服务管理器
- Zend Framework - 事件管理器
- Zend Framework - 模块系统
- 应用结构
- Zend Framework - 创建模块
- Zend Framework - 控制器
- Zend Framework - 路由
- Zend Framework - 视图层
- Zend Framework - 布局
- 模型与数据库
- 不同的数据库
- 表单与验证
- Zend Framework - 文件上传
- Zend Framework - Ajax
- Cookie 管理
- 会话管理
- Zend Framework - 身份验证
- 邮件管理
- Zend Framework - 单元测试
- Zend Framework - 错误处理
- Zend Framework - 工作示例
- Zend Framework 有用资源
- Zend Framework - 快速指南
- Zend Framework - 有用资源
- Zend Framework - 讨论
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-acl和zend-permissions-rbac。zend-permissions-acl 基于访问控制列表,zend-permissions-rbac 基于基于角色的访问控制列表。它们提供了 ACL 和 RBAC 概念的高级抽象,并有助于编写企业级应用程序。