簡體   English   中英

如何檢查未登錄用戶是否具有角色?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM