2015-02-10 3 views
0

Как использовать службы роли zfc rbac?Что такое поставщики ролей?

Я понимаю, что охранники препятствуют доступу пользователей к маршрутам, но мне кажется, что мне также нужны поставщики роли. Являются ли эти разрешения базы данных? В приведенном ниже примере «статья» находится контроллер и часть после «.». разрешение, предоставленное на этом контроллере? Как я могу проверить их на месте? Большое спасибо.

return [ 
    'zfc_rbac' => [ 
     'role_provider' => [ 
      'ZfcRbac\Role\InMemoryRoleProvider' => [ 
       'admin' => [ 
        'permissions' => [ 
         'article.delete', 
         'article.edit', 
         'article.archive', 
         'article.read' 
        ] 
       ], 
       'member' => [ 
        'permissions' => [ 
         'article.edit', 
         'article.archive', 
         'article.read' 
        ] 
       ], 
       'guest' => [ 
        'permissions' => ['article.read'] 
       ] 
      ] 
     ] 
    ] 
]; 

ответ

0

Here you can read about role providers

В ZF-RBAC одной личности могут иметь разные роли с различными разрешениями/привилегиями. Чтобы собрать роли для authorizationService, вам нужны поставщики роли. Они будут включать RoleProvicerInterface (link) с методом getRoles, который должен возвращать роли, с которыми должна работать служба авторизации.

Каждый идентификатор имеет IdentityInterface (link), который также имеет метод getRoles. Это вернет массив из roleNames, который будет сопоставлен с ролями из RolesProvider, чтобы узнать о разрешениях/привилегиях.

Затем вы можете узнать, что может делать текущий пользователь (личность).

+0

Я понимаю роли и настраиваю блокировщики защиты (которые основаны на ролях пользователей, которые я создал в БД). В моей текущей ситуации каждый пользователь имеет одну роль, и я разработал модули для каждого типа роли. Он работает в настоящее время как «foo role», не может получить доступ к «bar-модулю». Однако при повторном чтении документации мне кажется, что мне нужны поставщики роликов, а также блокировщики защиты. Можете ли вы расширить синтаксис выше? Является ли «статья» контроллером или действием? – Matt

+0

Или эти основные разрешения? Например, если у гостя есть «article.read», они могут читать только из базы данных и не могут писать или редактировать записи? – Matt

+0

@Matt Я думаю, что полностью зависит от вас, разрешено ли разрешение контроллеру или действию или что-то еще. В этом случае, я думаю, пример для контроллера ресурса ('article') и действий внутри контроллера (' delete', 'edit',' archive' и 'read'). – Wilt