bacon/bacon-authentication

该软件包已被弃用且不再维护。没有建议替代软件包。

通用身份验证模块

dev-feature/resolution 2013-06-05 15:55 UTC

This package is auto-updated.

Last update: 2024-08-16 03:06:48 UTC


README

主分支: 构建状态 覆盖率状态

简介

BaconAuthentication 是一个适用于 Zend Framework 2 的通用身份验证模块。它包含一个可插拔的身份验证服务,不仅允许创建简单的用户名/密码身份验证,还允许轻松集成第三方身份验证(如 OpenID 或 OAuth),以及双因素身份验证。

安装

  1. 将 Baconauthentication 添加到您的 composer.json。您可以使用此处的稳定标签或 dev-master

    "require": {
        "bacon/bacon-authentication": "dev-master"
    }
  2. 告诉 composer 下载 BaconAuthentication

    $ php composer.phar update

操作理论

BaconAuthentication 包含一个身份验证服务接口(BaconAuthentication\AuthenticationServiceInterface),它定义了两种方法。第一种方法是 authenticate($request, $response),它试图验证当前请求。此方法用于处理用户当前输入(例如,登录表单)以及检索当前已验证的主题。此方法返回值始终是 结果对象

另一种方法是 resetCredentials(),它将简单地删除所有持久信息,从而使已验证的主题匿名。

结果对象

结果对象 BaconAuthentication\Result\Result 实现了 BaconAuthentication\Result\ResultInterface。它提供了以下四个方法来区分不同的状态

  • isSuccess(): 当身份验证成功时为真。
  • isFailure(): 当身份验证失败时为真。
  • isChallenge(): 当生成挑战时为真。在这种情况下,您应将响应对象返回给 ZF2。
  • getPayload(): 返回结果的有效负载。在成功的情况下,它将是已验证主体的标识符。在失败的情况下,它将包含一个 错误对象

错误对象

错误对象用于携带错误信息。它包含两种方法

  • getScope(): 返回错误的范围,通常是由生成错误的插件名称。
  • getMessage(): 返回实际的错误消息。

可插拔的身份验证服务

BaconAuthentication 附带了一个简单但功能强大的身份验证服务接口实现。它允许您向服务添加插件,每个插件都执行特定任务。这些插件由以下接口定义,所有接口都位于 BaconAuthentication\Plugin 命名空间中

  • AuthenticationPluginInterface: 接收凭据并尝试验证它们。
  • ChallengePluginInterface: 当无法进行身份验证时创建挑战。
  • EventAwarePluginInterface: 通过将其附加到一个或多个事件来执行其任务。
  • ExtractionPluginInterface:从请求中提取凭证,这些凭证将传递给所有认证插件。
  • ResetPluginInterface:重置持久化的认证信息。

每个插件可以实现这些接口中的一个或多个。要将插件添加到服务中,请将其传递给addPlugin($plugin, $priority = 1)方法。通过改变优先级,您可以强制此特定插件提前或推迟执行。有关特定插件接口的更多信息,请参阅各自的内联文档。

除了这些接口之外,BaconAuthentication还包含以下预定义插件

HTTP基本认证插件

基本认证插件负责从HTTP头中提取凭证,并在没有凭证传递时触发凭证对话框。这个插件仅应在非常简单的应用中使用,并且要小心使用,因为没有方法让应用让浏览器忘记凭证。

HTTP POST插件

HTTP POST插件负责从POST请求中提取身份和密码。除了常规提取外,它还接受一个InputFilter来验证和过滤传入的数据。它还接受一个登录表单URL,如果没有认证信息,它会重定向到该URL。

Session插件

Session插件负责在会话中存储检索到的标识符,并在认证过程中提前返回它。这对于大多数基于HTTP的应用程序来说是必不可少的。