【问题标题】:Symfony2 with FOSUserBundle : Access based on group rights带有 FOSUserBundle 的 Symfony2:基于组权限的访问
【发布时间】:2013-11-16 05:27:54
【问题描述】:

我似乎找不到有关如何使用链接到 fos_group 的规则进行访问控制的文档。
在这个项目中,我希望以后能够定义使用预定义角色的新组,例如:ROLE_USER、ROLE_AMDIN 和 ROLE_SUPERAMDIN。
每个页面上都定义了角色可以做什么或不能做什么。

通常我使用 twig 中的 is_granted 函数来检查角色,但由于我希望系统首先检查组的角色,如果用户没有组检查用户特定的角色,我将无法使用它。

关于如何在 Symfony2 中使用 FOSUserBundle 组实现这一点的任何想法?

【问题讨论】:

标签: php symfony fosuserbundle roles usergroups


【解决方案1】:

我一直在努力制作这样的作品。这就是我发现的:通过覆盖 getRoles 方法将组角色与默认用户角色合并。 我希望这会对某人有所帮助。

class Users extends BaseUser
{

  [...]
 public function getRoles()
 {
    $roles = $this->roles;

    foreach ($this->getGroups() as $group) {
        $roles = array_merge($roles, $group->getRoles());
    }

    // we need to make sure to have at least one role
    $roles[] = static::ROLE_DEFAULT;

    return array_unique($roles);
 }
}

【讨论】:

  • 这似乎是正确的解决方案,FOSUserFOS\UserBundle\Model\User 实体中通过实现 GroupableInterface 使用它
  • Akram(目前是这个答案的作者):把别人的工作称为你的工作并不酷
猜你喜欢
  • 2012-08-12
  • 1970-01-01
  • 2015-11-20
  • 2016-03-27
  • 2019-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-14
相关资源
最近更新 更多