只要我将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"
] */
现在我打开浏览器,进入app_dev.php/my-path-to/vip/contact/list
,导致一个AccessDeniedException。
/编辑:这是同样的问题,因为这里ACL + SonataAdminBundle + SonataUserBundle。