在这种情况下,我需要检查未登录用户的角色。
我最初只是简单地查询users表的roles字段,看看是否包含有问题的角色,但这并没有考虑角色的层级结构。例如,如果用户被授予ROLE_ADMIN权限,他们也将拥有ROLE_USER权限。但是,您不会在数据库中看到ROLE_USER,因为在本例中它包含在ROLE_ADMIN中。
我对Symfony2的安全机制的内部工作原理有点不熟悉--我想为用户“模拟”一个令牌(基于他们的用户名),但我不确定怎么做,或者这是否可能。我一直在研究安全组件,但还没有找到解决方案。
是否可以检查未登录用户的角色?
发布于 2012-03-03 08:15:06
要获取用户拥有的角色列表,请查看以下代码
use Symfony\Component\Security\Core\Role\Role;
use Symfony\Component\Security\Core\Role\RoleHierarchy;
//....
$roleHierarchy = new RoleHierarchy($this->container->getParameter('security.role_hierarchy.roles'));
$userRoles = array(new Role('ROLE_ADMIN')); // Or $securityContext->getToken()->getRoles()
$reachableRoles = $roleHierarchy->getReachableRoles($userRoles);通知:这些方法从Symfony 4.3开始就被弃用了
https://stackoverflow.com/questions/9539559
复制相似问题