未显示受奏鸣曲管理中的角色实体块限制

Posted

技术标签:

【中文标题】未显示受奏鸣曲管理中的角色实体块限制【英文标题】:restricted by role entity block in Sonata Admin is not displayed 【发布时间】:2015-04-14 11:30:27 【问题描述】:

我正在尝试配置 SonataAdmin 以显示不同角色的某些实体管理。阅读奏鸣曲文档,***上的大量QnA,找不到问题...

问题:

如果我以 ROLE_ADMIN 用户身份登录,我可以看到所有块,所以奏鸣曲管理员工作正常。但是如果我用其他用户登录,我只会看到没有块的空白页面。我想说我只需要将角色 ROLE_SONATA_CONTRACT 添加到我的用户,但由于它不起作用,我尝试了所有我能想到的角色,包括在用户管理表单中自动生成的所有角色。

我可以从配置中提供更多信息,现在我只是复制了我认为相关的部分。

我的配置:

参考:http://sonata-project.org/bundles/admin/master/doc/reference/security.html#role-handler

# services.yml
services:
  sonata.block.admin.contract:
    class: STH\OrderBundle\Admin\ContractAdmin
    tags:
    -  name: sonata.admin, manager_type: orm, group: "Orders", label: "Orders" 
    arguments: [null, STH\OrderBundle\Entity\Contract, SonataAdminBundle:CRUD ]

# security.yml
role_hierarchy:
    ROLE_SONATA_CONTRACT:
      - ROLE_SONATA_BLOCK_ADMIN_CONTRACT_VIEW
      - ROLE_SONATA_BLOCK_ADMIN_CONTRACT_GUEST

    ROLE_ADMIN:       [ROLE_USER, ROLE_ALLOWED_TO_SWITCH, ROLE_SONATA_PAGE_ADMIN_PAGE_EDIT, ROLE_SONATA_PAGE_ADMIN_BLOCK_EDIT]
    ROLE_SUPER_ADMIN: ROLE_ADMIN

    SONATA:
      - ROLE_SONATA_PAGE_ADMIN_PAGE_EDIT  # if you are using acl then this line must be commented
      - ROLE_SONATA_PAGE_ADMIN_BLOCK_EDIT
access_decision_manager:
    strategy: unanimous

# config.yml
security:
    handler: sonata.admin.security.handler.role
    # acl security information
    information:
        GUEST:    [VIEW, LIST]
        STAFF:    [EDIT, LIST, CREATE]
        EDITOR:   [OPERATOR, EXPORT]
        ADMIN:    [MASTER, ROLE_ADMIN]
    # permissions not related to an object instance and also to be available when objects do not exist
    # the DELETE admin permission means the user is allowed to batch delete objects
    admin_permissions: [CREATE, LIST, DELETE, UNDELETE, EXPORT, OPERATOR, MASTER]
    # permission related to the objects
    object_permissions: [VIEW, EDIT, DELETE, UNDELETE, OPERATOR, MASTER, OWNER]

系统:Symfony 2.5.2、SonataAdminBundle、SonataUserBundle、FOSUserBundle。

【问题讨论】:

【参考方案1】:

我认为您没有正确定义角色层次结构。您是否尝试过类似的方法:

role_hierarchy:

    ROLE_USER: [ROLE_SONATA_BLOCK_ADMIN_CONTRACT_VIEW,ROLE_SONATA_BLOCK_ADMIN_CONTRACT_GUEST ]
    ROLE_ADMIN:       ROLE_USER
    ROLE_SUPER_ADMIN: ROLE_ADMIN

只是为了触发一些关于您定义层次结构的方式的见解。希望有帮助。

【讨论】:

试过你的建议 - 没有结果。如果您指的是ROLE_SONATA_CONTRACT: 及其后的新行,则定义数组的语法不同。也许你知道在奏鸣曲中调试角色权限的方法? 作为一个新手,我不想说错话,但我觉得Sonata与属于sf2安全组件工作的Roles hierarchi无关。据我所知,没有内置的安全相关命令。 我在项目中使用角色或权限没有任何问题,所以我会说它完全与奏鸣曲相关(而且很可能配置错误)。使用来自sonata-project.org/bundles/admin/master/doc/reference/… 的示例

以上是关于未显示受奏鸣曲管理中的角色实体块限制的主要内容,如果未能解决你的问题,请参考以下文章

在奏鸣曲管理实体的显示模板中添加自定义表单

如何通过预处理主题功能将树枝文件中的块限制为内容类型中的某些页面?

在奏鸣曲管理员中隐藏下载按钮

以奏鸣曲管理员的编辑形式为用户设置角色

奏鸣曲 Admin 当前实体

将奏鸣曲媒体与奏鸣曲格式化程序ckeditor集成的图像限制文件大小