我有一种情况需要检查未登录用户的角色.
我最初只是查询users表格的roles字段,看看问题中的角色是否被包含,但这并未考虑角色层次结构.例如,如果用户已被授予,ROLE_ADMIN他们也将拥有ROLE_USER.但是,您不会ROLE_USER在数据库中看到,因为在这种情况下它包含在ROLE_ADMIN.
我对Symfony2的安全机制的内部工作方式有点不熟悉 - 我想为用户"模仿"一个令牌(基于他们的用户名),但我不确定如何,或者甚至可能.我一直在挖掘安全组件,但尚未找到解决方案.
是否可以检查未登录用户的角色?
要获取用户拥有的角色列表,请查看此代码
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);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
819 次 |
| 最近记录: |