0

Как только я установил sonata_admin.security.handler в sonata.admin.security.handler.acl, единственным пользователем, имеющим доступ, является ROLE_SUPER_ADMIN. I думаю Я настроил все правильно, очевидно, нет.AclVoter отказывает в доступе к «LIST»

Я пробовал:

  • , чтобы дать пользователю реальную роль ROLE_VIP_CONTACT_ADMIN вместо назначения на fos_group, не увенчались успехом.
  • всех варианты security.access_decision_manager.strategy: утвердительные, консенсуса и единодушного
  • удалить все аКЛа таблицу, ACL: первонач, соната: админ: установка-Acl, и без сонаты: администратор: создание объектно-ACL и очищается кэш каждый раз.

Не имеет успеха.

# Acme\MyBundle\Controller\CRUDController.php 

$securityContext->getAdminPermissions(); 
# -> ["CREATE", "LIST", "DELETE", "UNDELETE", "EXPORT", "OPERATOR", "MASTER"] 

dump($this->admin->getSecurityInformation()); 
/* -> array:3 [▼ 
    "GUEST" => array:2 [▼ 
    0 => "VIEW" 
    1 => "LIST" 
    ] 
    "STAFF" => array:3 [▼ 
    0 => "EDIT" 
    1 => "LIST" 
    2 => "CREATE" 
    ] 
    "ADMIN" => array:3 [▼ 
    0 => "MASTER" 
    1 => "OPERATOR" 
    2 => "EXPORT" 
    ] 
] */ 

dump($this->getUser()->getRoles()); 
/* -> array:15 [▼ 
    0 => "ROLE_ADMIN" 
    1 => "ROLE_VIP_CONTACT_GUEST" 
    2 => "ROLE_VIP_CONTACT_STAFF" 
    3 => "ROLE_VIP_CONTACT_ADMIN" # <--- I gave him everything! 
    [...] 
    9 => "ROLE_ALLOWED_TO_SWITCH" 
    [...] 
    16 => "ROLE_USER" 
] */ 

Теперь я открываю браузер и перейти на app_dev.php/my-path-to/vip/contact/list, в результате AccessDeniedException.

/изменить: Это та же проблема, что и здесь ACL + SonataAdminBundle + SonataUserBundle.

ответ

0

После нескольких часов отладки в результате ACL знает о разрешении LIST с помощью Соната AdminPermissionMap. См SonataAdminBundle 5. Security и Documentation » Admin (Ctrl + F: security.acl.permission.map.class)

parameters: 
    security.acl.permission.map.class: Sonata\AdminBundle\Security\Acl\Permission\AdminPermissionMap 

Вы уже знаете это.

Короче говоря: конфигурация выполняется не только путем написания некоторых файлов конфигурации, но и для импорта правильных.

0

На Симфонии> 3.1 вы должны использовать это:

services: 
    security.acl.permission.map: 
    class: Sonata\AdminBundle\Security\Acl\Permission\AdminPermissionMap 

вместо

параметры: security.acl.permission.map.class: Соната \ AdminBundle \ Security \ Acl \ Разрешение \ AdminPermissionMap