我在Sonata Admin Bundle中使用ACL。当我以 root (具有ROLE_SUPER_ADMIN)身份登录时,我可以创建新用户。我创建了一个(名为 qwer ),然后将其作为 qwer 进入。
问题:在我的情况下, qwer 用户有空的dashbord,甚至有像
这样的角色 ROLE_SONATA_USER_ADMIN_USER_GUEST, ROLE_SONATA_USER_ADMIN_USER_STAFF, ROLE_SONATA_USER_ADMIN_USER_EDITOR
请告诉我 - 我该怎么做才能解决问题所在。
答案 0 :(得分:1)
您是否完全关注the documentation for ACL了?您应该添加sonata_admin配置和security.yml
以确保。我看起来像:
sonata_admin:
# ...
security:
handler: sonata.admin.security.handler.acl
# acl security information
information:
LIST: [LIST]
GUEST: [VIEW, LIST]
STAFF: [LIST, CREATE]
EDITOR: [OPERATOR, EXPORT, EDIT]
ADMIN: [MASTER]
admin_permissions: [CREATE, LIST, DELETE, UNDELETE, EXPORT, OPERATOR, MASTER]
# permission related to the objects
object_permissions: [VIEW, EDIT, DELETE, UNDELETE, OPERATOR, MASTER, OWNER]
同时确保您的security.yml
具有所需的配置:
security:
# ...
providers:
fos_userbundle:
id: fos_user.user_manager
acl:
connection: default
access_decision_manager:
strategy: unanimous
并为您的app/config/parameters.yml
或捆绑参数添加PermissionMap:
# src/AppBundle/Resources/config/services.yml
parameters:
# ...
# Symfony 3 and above
security.acl.permission.map:
class: Sonata\AdminBundle\Security\Acl\Permission\AdminPermissionMap
# Symfony < 3
security.acl.permission.map.class: Sonata\AdminBundle\Security\Acl\Permission\AdminPermissionMap
然后你需要运行3个命令:
初始化ACL设置(仅一次)
php app/console init:acl
重新加载对配置的更改(sonata_admin配置文件中的每次更改)
php app/console sonata:admin:setup-acl
为现有实体/对象生成(新)ACL规则。 (sonata_admin配置文件中的每个更改)
php app/console sonata:admin:generate-object-acl
然后,一旦设置完成配置,请注销并重新登录,以便应用角色。
答案 1 :(得分:0)
要解决此问题,请检查您的应用程序包行:
services:
security.acl.permission.map:
class: Sonata\AdminBundle\Security\Acl\Permission\AdminPermissionMap
parameters: