PHP Zend2 bjyauthorize доктрина Где установить роль по умолчанию, если не задана идентичность

Я довольно новичок в 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',

но я не знаю, где я должен определить роль по умолчанию в поставщике ролей …: — /

добрые пожелания

0

Решение

'default_role' настройка используется только отправленным AuthenticationIdentityProvider BjyAuthorize (и его фабрика).

При реализации собственного IdentityProvider, то вы просто должны реализовать BjyAuthorize\Provider\Identity\ProviderInterface#getIdentityRoles() так что это возвращается к личности по вашему выбору, когда ничего не дано.

1

Другие решения

Других решений пока нет …