2
我的应用程序具有角色的层次结构如下:的Symfony2:isGranted其他实体
- ROLE_SUPER_ADMIN
- ROLE_ADMIN
- ROLE_USER
我有我的控制器,使这项工作:
/**
* @Route("/admin/delete/{id}", name="_admin_delete")
* @Secure(roles="ROLE_ADMIN")
*/
public function deleteuserAction($id)
{
$user = $this->container->get('fos_user.user_manager')->findUserBy(array('id' => $id));
if (null === $user) {
throw $this->createNotFoundException('User id not found');
}
if ($user->hasRole('ROLE_ADMIN')) {
// You can not delete this user!
throw new ...
}
// delete user
$this->container->get('fos_user.user_manager')->deleteUser($user);
// ...
}
deleteuserAction是所有那些ROLE_ADMIN访问..但我想,他们不能删除谁拥有角色ROLE_ADMIN
或高校用户。
有一个正确的方法来做到这一点?
带有此配置您可以删除ROLE_SUPER_ADMIN
...是的,你可以把它添加到列表中,以阻止它,但有一个复杂的层次结构会变得难以管理。
有什么问题吗?你的方法似乎是正确的。 – Xocoatzin
@Xocoatzin,通过这个配置你可以删除ROLE_SUPER_ADMIN ...是的,你可以将它添加到列表中来阻止它,但是复杂的层次结构会变得很难管理。 – Federkun
如果您希望在应用程序中拥有更复杂的所有权方案,请使用访问控制列表(http://symfony.com/doc/2.0/cookbook/security/acl.html)。 – Xocoatzin