ZfcRbac по какой-то причине не распознает мою личность. Я был на нем часами, но, похоже, он не получил роли от моей личности, что странно, потому что об этом можно обязательно спросить в службе аутентификации.
\Zend\Debug\Debug::dump($authService->getIdentity());
Выше свалок следующее:
object(Application\Entity\User)#405 (7) {
["role":protected] => object(Application\Role\Role)#448 (4) {
["id":protected] => string(1) "1"["children":protected] => array(0) {
}
["name":protected] => string(5) "guest"["permissions":protected] => array(0) {
}
}
["id":protected] => int(1)
["username":protected] => NULL
["email":protected] => string(35) "[email protected]"["displayName":protected] => string(0) ""["password":protected] => string(19) "facebookToLocalUser"["state":protected] => NULL
}
Теперь, чтобы убедиться, что это точно такой же сервис аутентификации:
zfc_rbac.global.php
/**
* Key that is used to fetch the identity provider
*
* Please note that when an identity is found, it MUST implements thhe ZfcRbac\Identity\IdentityProviderInterface
* interface, otherwise it will throw an exception.
*/
'identity_provider' => 'zfcuser_auth_service',
module.config.php
'factories' => [
'zfcuser_auth_service' => function ($sm) {
return new \Application\Authentication\AuthenticationService(
$sm->get('ZfcUser\Authentication\Storage\Db'),
$sm->get('ZfcUser\Authentication\Adapter\AdapterChain')
);
},
],
'aliases' => [
'Zend\Authentication\AuthenticationService' => 'zfcuser_auth_service',
]
В контроллере
$authService = $this->zfcUserAuthentication()->getAuthService();
возвращается
string(48) "Application\Authentication\AuthenticationService"
Где Application \ Authentication \ AuthenticationService является не чем иным, как расширением Zend Authentication Service и реализует IdentityProviderInterface. Теперь я знаю, что в этом нет необходимости, но я попробовал это просто, чтобы быть уверенным.
namespace Application\Authentication;
class AuthenticationService extends \Zend\Authentication\AuthenticationService implements IdentityProviderInterface
{
}
Пока все хорошо (я думаю).
Хорошо, я пытался опубликовать изображения, но моей репутации не хватает такой возможности. Поэтому я подтверждаю, что панель инструментов Zend Devveloper действительно показывает все мои роли, предоставленные RoleProvider, на самой правой вкладке. Но слева больше, роль идентичности по-прежнему гостевая. Это явно неправильно и из-за этого ничего не работает.
Я действительно застрял здесь, и это раздражающий блок, потому что я чувствую, что я всего лишь в шаге от того, чтобы получить функциональность RBAC, какой он должен быть.
Дополнительная информация:
Я не использую Доктрину. Это система баз данных / картографирования, которую я сделал сам, предоставляя все, что от меня требуется ZfcRbac.
Я использую ZfcUser и ZfcRbac вместе.
Версии:
"name": "zf-commons/zfc-user",
"version": "1.2.2",
"name": "zf-commons/zfc-rbac",
"version": "v2.5.2",
Любые указатели или помощь будет принята с благодарностью!
Задача ещё не решена.
Других решений пока нет …