如何识别用户是否在Symfony2中被模拟?

在使用Symfony2构建的应用程序中,我们希望超级管理员能够模拟其他用户。通过向superadmin用户提供ROLE_ALLOWED_TO_SWITCH角色,这很容易。通过调用参考文档中所建议的“某处?_switch_user =”来实现切换。

然而,问题在于,如果当前用户实际上是模拟的,以便在页面上打印到“某处?_switch_user = _exit”的链接,则在模板中检测,从而使模拟用户能够返回到真实用户。

我没有使用Symfony2一段时间,所以我不确定,但是当您切换到另一个用户时,您将获得分配给该用户的所有角色和一个额外的角色:ROLE_PREVIOUS_ADMIN。所以我猜所有你需要做的是使用选民来检查这个角色是否被分配给当前用户使用选民。

// Twig

{% if is_granted('ROLE_PREVIOUS_ADMIN') %}
    <a href="...?_switch_user=_exit">EXIT</a>
{% endif %}

// PHP

<?php if ($view['security']->isGranted('ROLE_PREVIOUS_ADMIN')): ?>
    <a href="...?_switch_user=_exit">EXIT</a>
<?php endif ?>
http://stackoverflow.com/questions/6371712/how-to-identify-if-a-user-is-being-impersonated-in-symfony2

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:如何识别用户是否在Symfony2中被模拟?