在我的应用程序中测试角色时,我找到了isGranted
的函数SecurityContext
。它工作得很好但现在我需要检查不是当前用户的用户的角色,因此isGranted
对我不起作用。
我一直在寻找,并且我找到了用户的函数hasRole
,问题是该函数没有查看Symfony的层次结构树,它只查看分配给用户的角色。
那么,是否有一个函数可以查找用户在isGranted
等层次结构树中查找当前用户的角色?
修改
我找到了这个解决方案:
How to use the AccessDecisionManager in Symfony2 for authorization of arbitrary users?
我实现了它并且它有效,问题是它需要ContainerBuilder
而我更喜欢不同的方法。
任何想法?
答案 0 :(得分:0)
AFAIK SecurityContext基本上与Symfony\Component\Security\Core\Authentication\Token\TokenInterface
一起使用,可以使用getUser
方法获取当前用户。
如果未对用户令牌进行身份验证,则isGranted
首先尝试验证用户令牌,然后使用名为AccessDecisionManager
的类,它基本上遍历选民对象并调用它们(并且可以使用不同的策略)被称为选民的RoleHierarchyVoter
使用Symfony\Component\Security\Core\Role\RoleHierarchy
。
回答你的问题:
我认为对于其他用户来说,没有像isGranted那样的功能(或者不知道任何用户),但是你可以编写自己的服务,允许使用security.role_hierarchy
(只需要注意私有服务)。 / p>
在大多数情况下,BTW hasRole
可能应该足够了,所以也许你应该考虑一下你想做什么;)