Apigility Zend:使用密钥名称获取身份验证服务

时间:2016-11-25 12:55:18

标签: zend-framework2 apigility

我在config中设置了数据库适配器,我可以使用密钥名称在工厂中获取数据库服务,如:

int disp_file_info(char **argv)
{
 struct stat sb;

 stat(argv[1], &sb);
 printf("Inode: %d\n", sb.st_ino);
 printf("Hard Links: %d\n", sb.st_nlink);
 printf("Size: %d\n", sb.st_size);
 printf("Allocated space: %d\n", sb.st_blocks);
 printf("Minor: %d\n", minor(sb.st_dev));
 printf("Major: %d\n", major(sb.st_dev));
 printf("UID: %d\n", sb.st_uid);
 printf("GID: %d\n", sb.st_gid);
 }

然后我设置了具有密钥名称的身份验证适配器:' connectoauth2' 它工作正常,并验证我的休息api。

问题是我想注入这个' connectoauth2'到我的UserEducation服务到getIdentity所以我在工厂做了

$connectDb = $services->get('connectDb');

错误:无法解析服务" connectoauth2"到工厂;你确定你在配置期间提供了吗?

即使身份验证工作正常但仍然无法像数据库那样获得服务。

请帮忙!

谢谢!

2 个答案:

答案 0 :(得分:0)

您确定$services是服务经理吗?如果它是另一个服务定位器实例(例如ControllerManagerViewHelperManager而不是服务管理器),您首先必须从该服务定位器获取服务管理器:

$serviceManager = $services->getServiceLocator();

然后来自服务经理的服务:

$service = $serviceManager->get('connectoauth2');

检查所有其他服务定位器的概述here

答案 1 :(得分:0)

这只是Authentication Adapter而非Authentication Service。因此,如果您需要从identity检索Authentication,则应使用Authentication Service。在Zend Framework中,您可以像这样调用Authentication Service

$authentication = $serviceManager->get('authentication');

并像这样检索identity

$authentication->getIdentity()