我正在将Symfony应用程序从v4升级到v6。
我在security.yaml文件中定义了role_hierarchy,并希望在API路由中返回所有这些角色,这样管理员就可以在前端编辑用户的角色。
不管怎样,这就是我在v4中获得这些角色的方式。
/**
* Return all defined roles
* @RestGet(path="/roles")
* @Security("is_granted('ROLE_GLOBAL_ADMIN') or is_granted('ROLE_MAP_ADMIN')")
*/
public function getRolesAction() : Response
{
$roles = $this->container->getParameter('security.role_hierarchy.roles');
$serialized = $this->serializer->serialize($roles, 'json');
return new Response($serialized, 200, array('Content-Type' => 'application/json'));
}
我似乎找不到的替代品
$this->container->getParameter('security.role_hierarchy.roles');
在Symfony 6中。如果我把它改成
$this->container->get('security.role_hierarchy.roles');
服务"security.role_hierarchy.roles"未找到:容器内部";App\Controller\Api\Admin\UserController"是一个较小的服务定位器,它只知道";form.factory""fos_rest.view_handler"http_kernel"parameter_bag"requestrongtack"路由器"security.authorization_checker"security.csrf.token_manager"security.token_storage"串行器";以及";树枝;服务。
我无法想象没有办法以某种方式获得完整的角色列表。文档(除非我遗漏了它(似乎对解决这个问题没有多大作用。我应该注射一些";较大的";某个地方的服务定位器?
https://symfony.com/doc/current/controller.html#accessing-配置值
$this->getParameter('security.role_hierarchy.roles');