zfc-rbac identity_provider问题

时间:2014-03-21 07:45:35

标签: zend-framework zfc-rbac

我遇到zfcrbac的问题,我无法弄明白。

我想我可能会错过配置中的一些内容,但我已经阅读了几次文档而没有任何线索。

每当我尝试使用它时,我都会

"传递给ZfcRbac \ Service \ RoleService :: __ construct()的参数1必须是ZfcRbac \ Identity \ IdentityProviderInterface的实例,Zend \ Authentication \ AuthenticationService的实例给出"

我有

'identity_provider' => 'AuthService',

哪个AuthService是Zend \ Authentication \ AuthenticationService

的别名

我按照这个配置

'factories' => array(
            'Auth\Model\AuthStorage' => function($sm){
                return new \Auth\Model\AuthStorage('auth_user');  
            },

            'AuthService' => function($sm) {
                $dbAdapter      = $sm->get('Zend\Db\Adapter\Adapter');
                $dbTableAuthAdapter  = new DbTableAuthAdapter($dbAdapter, 'user','username','password', 'md5(concat("' . $staticSalt . '" ,?,passwordSalt)) and active=1');

                $authService = new AuthenticationService();
                $authService->setAdapter($dbTableAuthAdapter);
                $authService->setStorage($sm->get('Auth\Model\AuthStorage'));


                return $authService;
            },
        ),

所以我不知道自己错过了什么?

1 个答案:

答案 0 :(得分:3)

如文档中所述:https://github.com/ZF-Commons/zfc-rbac/blob/master/config/zfc_rbac.global.php.dist#L28

identity_provider选项的服务名称必须返回实现ZfcRbac \ Identity \ IdentityProviderInterface的实例。我们提供了一个使用AuthenticationService的内置服务:https://github.com/ZF-Commons/zfc-rbac/blob/master/config/zfc_rbac.global.php.dist#L31

我建议你坚持默认。为了构造ZfcRbac\Identity\AuthenticationIdentityProvider,ZfcRbac从其工厂中获取Zend\Authentication\AuthenticationService。因此,您实际需要的是通过'Zend \ Authentication \ AuthenticationService'替换配置中的AuthService。