【发布时间】:2012-11-13 10:11:26
【问题描述】:
我在 security.yml
中的层级角色有问题role_hierarchy
ROLE_SUPER_ADMIN: [ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
ROLE_ADMIN: [ROLE_PILOT, ROLE_EXPERT]
ROLE_PILOT: ROLE_PRODIVER
ROLE_PROVIDER: ROLE_PROVIDER_EXTERNAL
ROLE_PROVIDER_EXTERNAL: ROLE_USER
当我在 TWIG 中使用 *is_granted* 时:
{% if is_granted('ROLE_PROVIDER_EXTERNAL') %}
<li class="dropdown">[...]</li>
{% endif %}
通常,ROLE_PILOT 应该能够通过角色继承来查看这个 HTML 元素。但如果用户在 ROLE_PILOT 中连接,则 HTML 元素无法为他显示...
有人对我的问题有想法吗?
谢谢
【问题讨论】:
-
我觉得规则一定要从上到下写,这样最弱的规则就在上面,而不是在下面。
-
我试过了,但是没有任何变化。 PILOT 是继承的权限提供者,我的层次结构没有?!
-
var_dump($this->getContainer()->getParameter('security.role_hierarchy.roles'))(在控制器中)返回什么? -
我有相同的层次结构,但在 Php 而不是 Yaml 中。 5 个角色的数组:(...简化数组...)
ROLE_PROVIDER_EXTERNAL => ["ROLE_USER"] ROLE_PROVIDER => ["ROLE_PROVIDER_EXTERNAL"] ROLE_PILOT =>["ROLE_PRODIVER"] ROLE_ADMIN => ["ROLE_PILOT", "ROLE_EXPERT"] ROLE_SUPER_ADMIN ["ROLE_ADMIN", "ROLE_ALLOWED_TO_SWITCH"]
标签: php symfony acl hierarchical-data