5

在我的应用程序中测试角色时,我发现isGrantedSecurityContext. 它工作得很好,但现在我需要检查不是当前用户的用户的角色,所以isGranted对我不起作用。

我一直在寻找,我找到了hasRole用户的功能,问题是这个功能没有在 Symfony 的层次结构树中查找,它只是在分配给用户的角色中查找。

isGranted那么,是否有一个函数可以像当前用户一样在层次结构树中查找用户的角色?

编辑

我找到了这个解决方案:

如何使用 Symfony2 中的 AccessDecisionManager 对任意用户进行授权?

我实现了它并且它有效,问题是它需要ContainerBuilder并且我更喜欢不同的方法。

任何想法?

4

1 回答 1

0

基本上 AFAIK SecurityContextSymfony\Component\Security\Core\Authentication\Token\TokenInterface使用方法可以从哪里获取当前用户getUser

如果用户令牌未经过身份验证,则isGranted首先尝试验证用户令牌,然后使用调用的类,该类AccessDecisionManager基本上遍历选民对象并调用它们(并且可以为此使用不同的策略)其中一个被调用的选民是RoleHierarchyVoter使用Symfony\Component\Security\Core\Role\RoleHierarchy.

所以回答你的问题:

我认为对于其他用户来说没有像 isGranted 这样的功能(或者不知道任何功能),但是您可以编写自己的服务来允许使用security.role_hierarchy(请注意这是私人服务)。

顺便说一句hasRole,大多数时候可能就足够了,所以也许你应该考虑一下你想做什么;)

于 2012-09-25T09:43:49.480 回答