这是上下文:
我使用带有 api 平台的 Symfony 3.4。
我有两节课:
- 供应商
- 产品
我想列出所有供应商的产品
在供应商实体中,我在常规 CRUD 方法上实现了 access_control,该方法适用于选民。
我还有一条通过无法正常工作的子资源的路线:
* collectionOperations={
* "get"={
* "access_control"="is_granted('LIST', object)",
* "normalization_context"={"groups"={"supplier.liste"}},
* },
* },
* itemOperations={
* "get"={
* "method"="GET",
* "access_control"="is_granted('VIEW', object)",
* },
* },
* subresourceOperations={
* "supplier_product_get"={
* "path"="/supplier/{id}/products",
* "method"= "GET",
* "access_control"="is_granted('LIST', object)",
* },
* }
问题是,子资源的访问控制不起作用。它应该在那里检查选民对该资源的许可,但不检查选民并在我需要他返回 403 时返回 HTTP 响应代码 200。
我已经检查了他们使用安全性而不是 access_control 的文档:
* subresourceOperations={
* "supplier_product_get"={
* "path"="/supplier/{id}/products",
* "method"= "GET",
* "security"="is_granted('LIST', object)",
* },
* }
它也不起作用。
有没有人知道为什么不叫选民的任何线索或提示?