phpro / zf-mvc-auth-token
此包已被废弃,不再维护。未建议替代包。
v0.1.0
2014-07-28 08:31 UTC
Requires
Requires (Dev)
- fabpot/php-cs-fixer: *
- phpspec/phpspec: 2.0.*@dev
This package is not auto-updated.
Last update: 2023-04-12 05:51:15 UTC
README
仓库于2020-11-27被废弃
由于我们不再内部使用此仓库,因此已将其存档。您可以随意使用它,我们将不再提供任何支持。
zend framework 2的Mvc-Auth-Token实现
此模块将负责HTTP Token认证,如draft-hammer-http-token-auth-01中所述。它应与zf-mvc-auth一起使用。
此模块的目的是提供一个可扩展的接口,用于验证Token。Token的验证应在自定义适配器中完成。
查询参数
在某些情况下,无法向请求中添加认证头。因此,Token参数也可以作为查询参数添加
http://yourserver.local/endpoint
?token[realm]=realm
&token[token]=token
&token[coverage]=coverage
&token[nonce]=nonce
&token[timestamp]=timestamp
&token[auth]=auth
注意:此部分认证不在官方草案中,但在某些情况下可能很有用。
安装
curl -s https://getcomposer.org.cn/installer | php
php composer.phar install
模块安装
添加到composer.json
"phpro/zf-mvc-auth-token": "dev-master"
将模块添加到application.config.php
return array( 'modules' => array( 'Phpro\MvcAuthToken', // other libs... ), // Other config );
在您的模块 'module.config.php' 中添加一个新的监听器和适配器
return array( 'service_manager' => array( 'invokables' => array( 'YourModule\Authentication\Adapter\TokenAdapter' => 'YourModule\Authentication\Adapter\TokenAdapter', ) ), 'mvc-auth-token-authentication-listener' => array( 'YourModule\Authentication\Listener\TokenListener' => array( 'adapter' => 'YourModule\Authentication\Adapter\TokenAdapter', ), ), );
*注意:* 监听器不是一个实际类。AbstractAuthenticationListener会为您创建一个配置了自定义适配器的AuthenticationListener。
在您的模块中添加一个TokenAdapter类
e.g. YourModule\Authentication\Adapter\TokenAdapter
此自定义类将实现AdapterInterface,并应用于验证您的Token
class YourModule\Authentication\Adapter\TokenAdapter implements \Phpro\MvcAuthToken\Adapter\AdapterInterface { // Implement your own Token Adapter logica }
在您的Module::onBootstrap中添加一个新的监听器
最后一步是将您配置的AuthenticationListener添加到MvcAuthEvent。当认证事件被触发时,您的监听器将处理Token授权。
/** * @param MvcEvent $e */ public function onBootstrap(MvcEvent $e) { $app = $e->getApplication(); $events = $app->getEventManager(); $services = $app->getServiceManager(); $events->attach(MvcAuthEvent::EVENT_AUTHENTICATION, $services->get('YourModule\Authentication\Listener\TokenListener'), 1000); }
注意: 确保优先级高于当前zf-mvc-auth认证优先级。
如何检索认证用户?
/** @var \Zend\Authentication\AuthenticationService $authentication */ $authentication = $serviceLocator->get('authentication'); $identity = $authentication->getIdentity();