bacon / bacon-authentication
通用身份验证模块
Requires
- php: >=5.3.3
- zendframework/zend-eventmanager: >=2.1.0
- zendframework/zend-stdlib: >=2.1.0
Requires (Dev)
- phpunit/phpunit: 3.7.*
- satooshi/php-coveralls: >=0.6.0
- zendframework/zend-http: >=2.1.0
- zendframework/zend-inputfilter: >=2.1.0
- zendframework/zend-session: >=2.1.0
Suggests
- zendframework/zend-http: For HTTP based plugins
- zendframework/zend-inputfilter: For HTTP POST filtering
- zendframework/zend-session: For session identity storage
This package is auto-updated.
Last update: 2024-08-16 03:06:48 UTC
README
简介
BaconAuthentication 是一个适用于 Zend Framework 2 的通用身份验证模块。它包含一个可插拔的身份验证服务,不仅允许创建简单的用户名/密码身份验证,还允许轻松集成第三方身份验证(如 OpenID 或 OAuth),以及双因素身份验证。
安装
-
将 Baconauthentication 添加到您的 composer.json。您可以使用此处的稳定标签或 dev-master
"require": { "bacon/bacon-authentication": "dev-master" }
-
告诉 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的应用程序来说是必不可少的。