[英]How can I check if a non-logged in user has a role?
我遇到一種情況,我需要檢查未登錄用戶的角色。
我最初只是簡單地查詢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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.