Pie*_*NAY 5 security symfony fosuserbundle
我想了解一些关于Symfony和"超级管理员"的事情.
php app/console fos:user:create adminuser --super-admin
Run Code Online (Sandbox Code Playgroud)
我首先想知道是什么意思(来自doc)
[...]指定--super-admin选项会将用户标记为超级管理员[...]
我想这意味着授予ROLE_SUPER_ADMIN用户,因为我没有在用户表中看到任何超级管理员字段.
其次,虽然(仍然来自文档)
超级管理员可以访问您的应用程序的任何部分
security:
role_hierarchy:
ROLE_SUPER_ADMIN: [ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH, ...]
Run Code Online (Sandbox Code Playgroud)
为什么我们仍然需要为它配置访问层次结构?
查看 FOSUserBundle 的代码,您会发现如果使用标志调用CreateUserCommand--super-admin将使用布尔参数调用UserManipulator$superadmin=true。
现在 UserManipulator 调用将创建用户对象的UserManager,调用它的setSuperAdmin()方法并在之后持久化新用户。
该方法如下所示:
public function setSuperAdmin($boolean)
{
if (true === $boolean) {
$this->addRole(static::ROLE_SUPER_ADMIN);
} else {
$this->removeRole(static::ROLE_SUPER_ADMIN);
}
return $this;
}
Run Code Online (Sandbox Code Playgroud)
所以回答你的第一个问题:
是的,该--super-admin标志会导致FOSUserBundle创建具有该ROLE_SUPER_ADMIN角色的新用户。
您仍然必须在安全配置中包含角色层次结构,因为该ROLE_SUPER_ADMIN角色基本上与任何其他角色没有区别。
这只是Symfony 标准版提供的约定 ,即具有角色的用户不应有任何访问限制。ROLE_SUPER_ADMIN
如果您希望ROLE_SUPER_ADMIN默认情况下绕过所有安全投票者 - 请查看 JMSSecurityExtraBundle's IddqdVoter,它为特殊角色实现了这一点ROLE_IDDQD。但是,这已经提出在您的其他问题在这里。
| 归档时间: |
|
| 查看次数: |
4169 次 |
| 最近记录: |