【问题标题】:Symfony 6: Get all roles from security.role_hierarchySymfony 6:从 security.role_hierarchy 获取所有角色
【发布时间】: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\" 服务。

我无法想象没有办法以某种方式获得完整的角色列表。文档(除非我错过了它)似乎对解决这个问题没有太大作用。我应该从某个地方注入一些“更大”的服务定位器吗?

    标签: symfony-security symfony6


    【解决方案1】:

    https://symfony.com/doc/current/controller.html#accessing-configuration-values

    $this->getParameter('security.role_hierarchy.roles');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 1970-01-01
      • 1970-01-01
      • 2021-10-06
      • 1970-01-01
      • 2014-05-08
      • 2019-02-01
      相关资源
      最近更新 更多