【发布时间】:2022-09-28 09:38:17
【问题描述】:
我正在将 Symfony 应用程序从 v4 升级到 v6。
我在我的 security.yaml 文件中定义了一个 role_hierarchy,并希望在 API 路由中返回所有这些角色,以便管理员可以在前端编辑用户的角色。
无论如何,这就是我在 v4 中获得这些角色的方式。
/**
* Return all defined roles
* @Rest\\Get(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\", \"request_stack\", \"router\", \"security.authorization_checker\", \"security.csrf.token_manager\" 、\"security.token_storage\"、\"serializer\" 和 \"twig\" 服务。
我无法想象没有办法以某种方式获得完整的角色列表。文档(除非我错过了它)似乎对解决这个问题没有太大作用。我应该从某个地方注入一些“更大”的服务定位器吗?