0

sonata_admin.security.handler에서 sonata.admin.security.handler.acl으로 설정하면 ROLE_SUPER_ADMIN이있는 사용자 만 액세스 할 수 있습니다. 나는 라고 생각합니다. 모든 것을 올바르게 구성했습니다. 분명히 아닙니다. AclVoter가 'LIST'에 대한 액세스를 거부합니다

내가 시도 :

  • 는 사용자에게 실제 역할 ROLE_VIP_CONTACT_ADMIN을주는 대신 fos_group, 아니 성공에 할당 할 수 있습니다. security.access_decision_manager.strategy에 대한
  • 모든 옵션 : 긍정적, 합의와 만장일치
  • 모든 ACL 테이블, 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" 
] */ 

지금 내 브라우저를 열고과 AccessDeniedException 결과 app_dev.php/my-path-to/vip/contact/list로 이동합니다.

/편집 : 여기는 ACL + SonataAdminBundle + SonataUserBundle과 같은 문제입니다.

답변

0

디버깅 시간이 지나면 Sonata의 AdminPermissionMap을 사용하여 ACL에 LIST 사용 권한에 대한 정보를 제공하게됩니다. 당신은 이미 알고 있습니다

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

: 는 SonataAdminBundle 5. SecurityDocumentation » Admin (security.acl.permission.map.class Ctrl 키 + F)를 참조하십시오.

짧은 이야기를 나누려면 구성 파일을 작성하고 올바른 파일을 가져 와서 구성해야합니다. 심포니> 3.1

0

이를 사용한다 : 대신

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

매개 변수 : security.acl.permission.map.class : 소나타 \ AdminBundle \ 보안 \ ACL이 \ 권한 \ AdminPermissionMap