0

我有一个用户可以链接到几家公司的应用程序。与公司的多对多关系是一个称为 Associate 的杰出实体。

我想为这个 Associate 实体提供与我的 FOSUserBundle User 实体完全相同的角色功能。重要提示:如果用户拥有一家公司的 role_manager,则不应授予该用户访问他所属的另一家公司的特定功能的权限。

有没有一种干净的方法可以做到这一点?例如,我想检查 $this->getUser->getAssociate->hasRole('ROLE_MANAGER') 是否为真。

如果我给我的实体 Associate 提供一个角色数组怎么办?我读过它不够安全?为什么?如果无论如何我的用户必须通过 FOS 安全登录检查,有人能做些什么来破坏这种安全性?

我发现一篇文章建议使用选民。但是我不想过滤路由,我真的想根据用户和公司之间的链接检查条件,所以如果投票者是解决方案,我将如何使用它?

编辑:如果存在不涉及角色或具有不同逻辑的更好解决方案,我有兴趣了解它!

4

1 回答 1

0

所以在我的情况下,我实际上一个用户实际上只能链接到最多 4 家公司,每家公司都由其类别定义。

官方文档建议使用 ACL,为每个公司定义一个角色或将数据存储在实体中。cf第一段: http ://symfony.com/doc/current/cookbook/security/acl.html

我使用了角色和业务逻辑的组合。我已经为每种类型的公司创建了角色,并且由于一个用户每种类型只能拥有一个公司,所以我只需要检查类型和与该类型关联的角色管理器。

在这里查看我的选民: symfony2 call is_granted in voter:如何避免无限循环?

于 2014-12-09T11:46:17.447 回答