Я строю 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;
.....
NOTE В моих обычных контроллерах бэк-офиса я уже использую избирателей и IS_GRANTED. Я пытаюсь сказать, что мой контроль доступа работает отлично в других местах, за исключением моих сущностей API PLATFORM.
Прямо сейчас, даже несмотря на то, что я добавил ROLE_ADMIN в метод PUT, я аутентифицируюсь с ROLE_USERтолько пользователь, и я могу поставить страницу. Это означает, что он не учитывает мою РОЛЬ в разделе is_granted аннотации ApiPlatform.
Есть идеи почему?