我正在尝试通过DoctrineModule for Zend2 的源代码来工作,因为几乎不存在针对初学者的综合文档。
在那里,我找到了一个自定义身份验证适配器ObjectRepository。此类接受DoctrineModule\Options\Authentication的对象。我只需要将该credentialCallable
值设置为自定义的、基于BCrypt的函数。
我为我的控制器编写了一个类来包装适配器:
namespace User\Controller\Plugin;
class UserAuthentication extends AbstractPlugin {
protected $_authAdapter = null;
protected $_authService = null;
public function __construct($authAdapter) {
$this->setAuthAdapter($authAdapter);
}
// More setters/getters
}
现在我需要以某种方式配置模块,以便这里的调用会给我一个有效的实例。
$uAuth = $this->getServiceLocator()->get('User\Controller\Plugin\UserAuthentication');
所以很自然,我将不得不使用模块配置。但是在这里我完全被卡住了,因为我找不到任何关于如何正确创建类实例的提示。到目前为止,这是我想出的:
return array(
'di' => array(
'instance' => array(
'User\Event\Authentication' => array(
'parameters' => array(
'userAuthenticationPlugin' => 'User\Controller\Plugin\UserAuthentication',
),
),
'User\Controller\Plugin\UserAuthentication' => array(
'parameters' => array(
'authAdapter' => 'DoctrineModule\Authentication\Adapter\ObjectRepository'
),
),
),
),
'service_manager' => array(
'factories' => array(
'DoctrineModule\Authentication\Adapter\ObjectRepository' => function ($sm) {
/// ????
},
'DoctrineModule\Options\Authentication' => function($sm) {
/// ????
},
),
),
);
所以我不知道在那里填写什么,或者这是否是正确的方法。也许我完全走错了路,因为在执行此操作时,我得到:
An abstract factory could not create an instance of usercontrollerpluginuserauthentication(alias: User\Controller\Plugin\UserAuthentication).
我感谢任何想法和提示。请不要指导我ZfcUser
或类似的,我想/需要自己实现这个。