Symfony API平台GraphQL安全性

Symfony API平台GraphQL安全性,symfony,graphql,symfony4,api-platform.com,Symfony,Graphql,Symfony4,Api Platform.com,所以我在我的Symfony 4项目中使用API平台,并且我读到它支持graphQl,所以我在security.yml中设置了一个访问控制,允许用户访问graphQl API: - { path: ^/api/graphql, roles: IS_AUTHENTICATED_ANONYMOUSLY } 在每个实体中,我都有对itemOperations和CollectionOperations的访问控制。例如: * @ApiResource( * itemOperations={

所以我在我的Symfony 4项目中使用API平台,并且我读到它支持graphQl,所以我在security.yml中设置了一个访问控制,允许用户访问graphQl API:

- { path: ^/api/graphql, roles: IS_AUTHENTICATED_ANONYMOUSLY }
在每个实体中,我都有对itemOperations和CollectionOperations的访问控制。例如:

 * @ApiResource(
 *     itemOperations={
 *         "get"={
 *             "access_control"="is_granted('ROLE_ADMIN')"
 *         }
 *     },
 *     collectionOperations={
 *         "get"={
 *             "access_control"="is_granted('ROLE_ADMIN')"
 *         }
 *     }
 * )
但问题是,任何用户都可以通过graphQL访问该实体,因为graphQL忽略了这些操作的访问控制。
有没有办法强迫graphQL遵守这些规则?

itemOperations
collectionOperations
与graphQL无关,只与REST相关

您需要在GraphQL操作中添加访问控制,或者,如果您希望以REST和GraphQL为目标(但不区分操作),您可以将其作为
属性添加

另外,
access\u control
也不推荐使用。您应该使用
安全性


您还可以阅读此文档:

是否有任何方法可以对某些graphql操作应用安全控制?例如,如果我想允许作为特定ID进行搜索,但不允许检索所有记录。