Api Platform access_control: добавление роли не работает

Я строю Symfony 4 cmf. Я использую платформу API. В сущности page.php я добавил следующее

<?php

namespace App\Entity;

use ApiPlatform\Core\Annotation\ApiResource;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Serializer\Annotation\Groups;

 /**
 * @ApiResource(
 *     normalizationContext={"groups"={"read"}},
 *     denormalizationContext={"groups"={"write"}},
 *     collectionOperations={"get"},
 *     itemOperations={
 *       "get",
 *       "put"={"security"="is_granted('ROLE_ADMIN')"},
 *     }
 * )
 * @ORM\Entity(repositoryClass="App\Repository\PageRepository")
 */
 class Page
{
/**
 * @ORM\Id()
 * @ORM\GeneratedValue()
 * @ORM\Column(type="integer")
 */
private $id;

/**
 * @ORM\Column(type="string", length=255)
 * @Groups("write")
 */
private $route;

/**
 * @ORM\Column(type="string", length=255)
 * @Groups({"read", "write"})
 */
private $name;
.....

ПРИМЕЧАНИЕ. В своих обычных контроллерах бэк-офиса я уже использую избиратели и IS_GRANTED. Я пытаюсь сказать, что мой контроль доступа отлично работает в других местах, кроме объектов моей ПЛАТФОРМЫ API.

Прямо сейчас, несмотря на то, что я добавил ROLE_ADMIN к методу PUT, я аутентифицирую пользователя только ROLE_USER, и я могу PUT страницы. Это означает, что он не принимает во внимание мою РОЛЬ в разделе is_granted аннотации ApiPlatform.

Есть идеи, почему?


person Ajir    schedule 08.10.2019    source источник


Ответы (1)


Не знаю, имеет ли это значение, но попробуйте:

"put"={"access_control"="is_granted('ROLE_ADMIN')"},
person zambadu    schedule 16.12.2019