- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
在我的应用程序中测试角色时,我发现了 SecurityContext
的函数 isGranted
。它工作得很好,但现在我需要检查不是当前用户的用户的角色,所以 isGranted
对我不起作用。
我一直在寻找,我找到了用户的函数hasRole
,问题是这个函数没有在 Symfony 的层次结构树中查找,它只是在分配给的角色中查找用户。
那么,有没有像 isGranted
为当前用户做的那样在层次结构树中查找用户角色的函数?
编辑
我找到了这个解决方案:
How to use the AccessDecisionManager in Symfony2 for authorization of arbitrary users?
我实现了它并且它有效,问题是它需要 ContainerBuilder
,我更喜欢不同的方法。
有什么想法吗?
最佳答案
基本上 AFAIK SecurityContext 与 Symfony\Component\Security\Core\Authentication\Token\TokenInterface
一起工作,从那里可以使用 getUser
方法获取当前用户。
如果用户 token 未通过身份验证,则 isGranted
首先尝试对用户 token 进行身份验证,然后使用名为 AccessDecisionManager
的类,该类基本上遍历选民对象并调用它们(并且可以使用不同的策略)其中一个被调用的选民是 RoleHierarchyVoter
,它使用 Symfony\Component\Security\Core\Role\RoleHierarchy
。
所以回答你的问题:
我认为对于其他用户(或不知道任何其他用户)来说,没有像 isGranted 这样的功能,但您可以编写自己的服务,允许使用 security.role_hierarchy
(请注意这是私有(private)服务)。
顺便说一句,hasRole
在大多数情况下可能就足够了,所以也许你应该考虑一下你想做什么 ;)
关于php - Symfony2 中 isGranted 的替代品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12578182/
假设有某些路由字符串,例如受防火墙保护的“/path/index.html”,如何检查当前用户是否能够访问它? 提前致谢! 对不起,我应该更明确一点:我有一个路由名称数组,我构建了一个菜单。许多具有不
我发现在 Symfony 中我可以使用注释以一种干净的方式向我的 Controller 方法添加额外的功能,这真的很方便。例如: /** * @Route("/{id}") * @IsGrante
任何人都可以解释以下 c# 行为吗?我已经编写了一个小型控制台应用程序来了解 CAS,但我似乎无法理解为什么以下代码行会像它们那样工作: string[] myRoles = new string[]
有时,我有一个页面,我想对不同规则的复杂组合使用react,这些规则总共只是一件事:“当前用户可以执行此操作吗?”。 目前,大多数检查都直接在我的 Controller 内进行,因此我可以: if($
在我的应用程序中测试角色时,我发现了 SecurityContext 的函数 isGranted。它工作得很好,但现在我需要检查不是当前用户的用户的角色,所以 isGranted 对我不起作用。 我一
我目前正在为我的应用程序创建单元测试,但这是我第一次这样做。 我想测试这个功能: /** * This method search if the user is already in a team
我正在开发一个 Symfony2 应用程序,我们想在其中引入 Security Voters . DX 计划(jay!)给我们带来了the simpler version这种机制,所以我想使用它。关于
我正在将 Symfony 从 2.8 升级到 3.4,并且我有一个身份验证监听器。 监听器的构造器 public function __construct(EntityManager $entit
我在 Symfony 2 项目中使用 SonataAdminBundle 和 SonataUserBundle。安装的包是: $ composer show | grep symfony friend
我是一名优秀的程序员,十分优秀!