Я довольно новичок в Zend 2, Doctrine and Stuff
В моем проекте я хотел бы реализовать модуль BjyAuthorize из Zend 2 через доктрину.
Я уже сделал кое-что — я успешно реализовал и настроил все, кроме роли по умолчанию, если идентификация не указана (новый пользователь посещает или, например, после выхода из системы).
Ролевые и пользовательские классы — это чертежи BjyAuthorize
это мой класс провайдера идентификации, который определен в моем bjyauthorize.global.php
'identity_provider' => 'Application\Provider\Identity\IdentityProvider',
код:
namespace Application\Provider\Identity;
use BjyAuthorize\Provider\Identity\ProviderInterface;
use Zend\Authentication\AuthenticationService;
class IdentityProvider implements ProviderInterface
{
// public function getDefaultRole()
// {
// $aTest = "test";
// return new Debug();
// }
public function getIdentityRoles()
{
$oIdentity = $this->getIdentity();
$aRoles = [];
if(!empty($oIdentity))
{
$aRoles = $oIdentity->getRoles();
}
return $aRoles;
}
protected $authService;
public function __construct(AuthenticationService $authService)
{
$this->authService = $authService;
}
public function getAdapter()
{
return $this->authService->getAdapter();
}
public function getStorage()
{
return $this->authService->getStorage();
}
public function getIdentity()
{
return $this->authService->getIdentity();
}
public function clearIdentity()
{
return $this->authService->clearIdentity();
}
}
поставщик ролей успешно настроен на
'role_providers' => [
// this will load roles from
// the 'BjyAuthorize\Provider\Role\ObjectRepositoryProvider' service
"BjyAuthorize\Provider\Role\ObjectRepositoryProvider" => [
// class name of the entity representing the role
'role_entity_class' => 'Application\Tables\Role',
// service name of the object manager
'object_manager' => 'doctrine.entitymanager.orm_default',
],
],
Единственное, чего сейчас не хватает, так это того, что я хочу установить роль по умолчанию (из db, роль «гость»), если новый пользователь посещает страницу. после прочтения и поиска в Google я не могу найти подсказки, где и как установить роль по умолчанию.
Я уже пробовал метод «getDefaultRole» в моем IdentityProvider, но этот метод, похоже, не запускается.
Теперь я вижу только выборку роли по умолчанию в моем «getIdentityRoles», если идентификация не установлена.
Но для того, чтобы архивировать это, я должен получить менеджера сущности доктрины и еще кое-что включить — это единственный способ?
редактировать:
В «byauthorize.global.php» я вижу следующие строки:
// set the 'guest' role as default (must be defined in a role provider)
'default_role' => 'guest',
но я не знаю, где я должен определить роль по умолчанию в поставщике ролей …: — /
добрые пожелания
'default_role'
настройка используется только отправленным AuthenticationIdentityProvider
BjyAuthorize (и его фабрика).
При реализации собственного IdentityProvider
, то вы просто должны реализовать BjyAuthorize\Provider\Identity\ProviderInterface#getIdentityRoles()
так что это возвращается к личности по вашему выбору, когда ничего не дано.
Других решений пока нет …