Я новичок в Zend 2, Doctrine и Stuff
В моем проекте я хотел бы реализовать модуль BjyAuthorize из zend 2 через доктрину. Я уже кое-что сделал - я успешно реализовал и сконфигурировал все, кроме роли по умолчанию, если не задан идентификатор (новый пользователь является visting или после выхода из системы, например).
роль и классы пользователей - это чертежи из 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, роль "гость"), если новый пользователь посещает страницу. после всех чтений и googling я не могу найти подсказки, где и как установить роль по умолчанию.
Я уже пробовал метод getDefaultRole в моем IdentityProvider, но этот метод, похоже, не запускается.
Теперь я вижу только, чтобы получить роль по умолчанию в моих "getIdentityRoles", если не задано личность.
Но чтобы архивировать это, я должен получить менеджера сущности доктрины и многое другое, чтобы включить - это единственный способ?
edit: В "byauthorize.global.php" я вижу следующие строки:
// set the 'guest' role as default (must be defined in a role provider)
'default_role' => 'guest',
но я не знаю, где ii нужно определить роль по умолчанию в роли поставщика...: -/
добрые пожелания
Параметр 'default_role'
используется только отправленным AuthenticationIdentityProvider
из BjyAuthorize (и его фабрикой).
При реализации собственного IdentityProvider
вы просто должны реализовать BjyAuthorize\Provider\Identity\ProviderInterface#getIdentityRoles()
чтобы он возвращался к личность по вашему выбору, когда ни один не указан.