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

0

Я новичок в 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 нужно определить роль по умолчанию в роли поставщика...: -/

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

Теги:
doctrine2
zend-framework2
bjyauthorize

1 ответ

1
Лучший ответ

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

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

  • 0
    но как я могу получить доступ к роли по умолчанию из базы данных через доктрину в этом раннем состоянии (в моем собственном классе identityprovider). или я что-то упустил здесь и совершенно неправильно, чтобы получить класс по умолчанию из БД? .. извините за май n00b вопросы, это мой первый проект Zend 2 ..
  • 0
    Я просто получил это .. увидел это в вашем "ZfcUserZendDb". вернуть строку как роль все, что нужно .. спасибо

Ещё вопросы

Сообщество Overcoder
Наверх
Меню