首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Symfony -理解超级管理员

Symfony -理解超级管理员
EN

Stack Overflow用户
提问于 2013-10-30 09:00:11
回答 2查看 5.2K关注 0票数 6

我想了解一些关于Symfony和“超级管理员”的东西。

当我使用具有超级管理权限的创建用户的FOSUser

代码语言:javascript
复制
php app/console fos:user:create adminuser --super-admin

我首先想知道(从医生那里)什么意思。

...Specifying的-超级管理选项将标记用户为超级管理员.

我认为这意味着将ROLE_SUPER_ADMIN授予用户,因为我在user表中没有看到任何超级管理字段。

第二,当(从医生那里)

超级管理员可以访问应用程序的任何部分。

代码语言:javascript
复制
security:
    role_hierarchy:
        ROLE_SUPER_ADMIN: [ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH, ...]

为什么我们仍然需要为它配置访问层次结构?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-30 09:54:36

查看FOSUserBundle的代码,您会发现,如果使用CreateUserCommand标志调用--super-admin,将使用布尔参数$superadmin=true调用UserManipulator

现在,UserManipulator调用将创建用户对象的UserManager,调用它的setSuperAdmin()方法,然后持久化新用户。

该方法如下所示:

代码语言:javascript
复制
public function setSuperAdmin($boolean)
{
    if (true === $boolean) {
        $this->addRole(static::ROLE_SUPER_ADMIN);
    } else {
        $this->removeRole(static::ROLE_SUPER_ADMIN);
    }

    return $this;
}

所以回答你的第一个问题:

--super-admin标志导致FOSUserBundle创建一个具有ROLE_SUPER_ADMIN角色的新用户。

您仍然必须在您的安全配置中包含角色层次结构,因为ROLE_SUPER_ADMIN角色基本上与任何其他角色没有区别。

这只是一个约定 由Symfony标准版提供,角色ROLE_SUPER_ADMIN的用户不应该有任何访问限制。

如果您希望ROLE_SUPER_ADMIN在默认情况下绕过所有安全投票者,请查看JMSSecurityExtraBundle的IddqdVoter,它为特殊角色ROLE_IDDQD实现了这个功能。但这已经在你的另一个问题这里中提出了。

票数 6
EN

Stack Overflow用户

发布于 2013-10-30 10:00:07

通过定义层次结构,可以显式地授予它ROLE_ADMIN和ROLE_ALLOWED_TO_SWITCH角色(或其他您可以拥有的自定义角色)。

如果您注释这一行,并且尝试与您的ROLE_SUPER_ADMIN用户一起访问带有ROLE_ADMIN检查的操作,您将得到一个不允许的错误。

ROLE_SUPER_ADMIN只是超级管理员角色应该拥有的名称的约定,但是它没有自己的特权,您必须显式地将它们授予它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19677807

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档