我遵循Symfony文档并使用以下twig帮助函数来确定用户是否正在切换角色以进行模拟。问题是,对于ROLE_ADMIN,它总是返回true。
{% if is_granted('ROLE_PREVIOUS_ADMIN') %}
<a href="{{ path('homepage', {'_switch_user': '_exit'}) }}">Exit impersonation</a>
{% endif %}
奇怪的是,当我通过管理员的调试工具栏检查安全令牌时,我看到以下角色:
[ROLE_ADMIN,ROLE_SHAWMUT,ROLE_USER]
以下继承:
[ROLE_USER,ROLE_ALLOWED_TO_SWITCH]
那么,如果以上是此安全令牌可用的角色,为什么is_granted(&#39; ROLE_PREVIOUS_ADMIN&#39;)会返回true?
=====
这是我必须做的工作,包括使用折旧的app.security.token变量:
{% if is_granted('ROLE_PREVIOUS_ADMIN') %}
{% for role in app.security.token.roles %}
{% if role.role == 'ROLE_PREVIOUS_ADMIN' %}
<span class="imp-designation">{impersonating}</span>
{% endif %}
{% endfor %}
{% endif %}
=====
这是我的security.yml文件:http://pastebin.com/f04ZG4K8