Я строю 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.
Есть идеи, почему?