我有一个应用程序,用户可以链接到多个公司。 与公司的manyToMany关系是一个名为Associate的杰出实体。
我想向此关联实体提供与我的FOSUserBundle用户实体完全相同的角色功能。重要提示:如果用户拥有一家公司的role_manager,则不应授予其访问其所属的其他公司的特定功能的权利。
有干净的方法吗? 我想检查一下,例如$ this-> getUser-> getAssociate-> hasRole(' ROLE_MANAGER')是否为真。
如果我将一个角色数组提供给我的实体Associate怎么办?我读过它不够安全吗?为什么?如果我的用户必须通过FOS安全登录检查,有什么人可以打破这种安全性?
我发现了一篇建议使用选民的文章。但是我不想过滤路线,我真的想根据用户和公司之间的链接检查条件,所以如果选民是解决方案,我该如何使用?
编辑:如果存在一个不涉及角色或逻辑不同的更好的解决方案,我有兴趣了解它!答案 0 :(得分:0)
所以在我的情况下,实际上我只有一个用户可以链接到最多4个公司,每个公司都是由其类别定义的不同类型。
官方文档建议使用ACL,为每个公司定义角色或将数据存储在实体中。 cf第一段: http://symfony.com/doc/current/cookbook/security/acl.html
我使用了角色和业务逻辑的组合。我为每种类型的公司创建了角色,因为一个用户每个类型只能有一个公司,我只需要检查类型和与该类型相关联的角色管理器。
在这里见我的选民: symfony2 call is_granted in voter : how to avoid an infinite loop?