Symfony 仅当用户未连接到API平台时才允许post方法

Symfony 仅当用户未连接到API平台时才允许post方法,symfony,api-platform.com,Symfony,Api Platform.com,我的API有问题。我正在使用API平台,我对它非常陌生,所以如果我的问题可能很愚蠢,请提前道歉 在我的API中,我有一个管理员、一个版主和一些用户。我想要的是,只有访问者才能为用户创建帐户。所以管理员、版主和用户不能创建用户帐户 这是我的层次结构文件(security.yaml): 以下是我的实体用户的@ApiResource: * @ApiResource( * attributes={ * "normalization_context"={"groups"={"

我的API有问题。我正在使用API平台,我对它非常陌生,所以如果我的问题可能很愚蠢,请提前道歉

在我的API中,我有一个管理员、一个版主和一些用户。我想要的是,只有访问者才能为用户创建帐户。所以管理员、版主和用户不能创建用户帐户

这是我的层次结构文件(security.yaml):

以下是我的实体用户的@ApiResource:

 * @ApiResource(
 *     attributes={
 *         "normalization_context"={"groups"={"read-user"}},
 *         "denormalization_context"={"groups"={"write-user"}},
 *         "validation_groups"=App\Validator\ValidationGroupsGenerator::class
 *     },
 *     collectionOperations={
 *         "get"={"method"="GET", "access_control"="is_granted('ROLE_MODERATOR')"},
 *         "post"={"method"="POST"}
 *     },
 *     itemOperations={
 *         "get"={"method"="GET", "access_control"="user.getId() === object.getId() or is_granted('ROLE_MODERATOR')"},
 *         "put"={"method"="PUT", "access_control"="user.getId() === object.getId() or is_granted('ROLE_MODERATOR')"}
 *     }
 * )
"post"={"method"="POST", "access_control"="is_granted('IS_AUTHENTICATED_FULLY') === false"}
这是我的访问控制(security.yaml):

场景:我正在尝试创建一个用户帐户,名为访问者/用户/版主/管理员

我的错误:版主、管理员和用户可以创建用户帐户

预期结果:只有访问者才能创建用户帐户

我所尝试的:

我将其添加到我的实体中

"post"={"method"="POST", "access_control"="user is null"}
它不允许角色创建用户帐户(给他们一个403禁止,这是我想要的),但是我现在尝试创建一个访客帐户时,没有找到401 JWT令牌


你有什么办法帮我吗?提前感谢

将此问题放入“我的实体用户”中的“收集操作”中解决:

 * @ApiResource(
 *     attributes={
 *         "normalization_context"={"groups"={"read-user"}},
 *         "denormalization_context"={"groups"={"write-user"}},
 *         "validation_groups"=App\Validator\ValidationGroupsGenerator::class
 *     },
 *     collectionOperations={
 *         "get"={"method"="GET", "access_control"="is_granted('ROLE_MODERATOR')"},
 *         "post"={"method"="POST"}
 *     },
 *     itemOperations={
 *         "get"={"method"="GET", "access_control"="user.getId() === object.getId() or is_granted('ROLE_MODERATOR')"},
 *         "put"={"method"="PUT", "access_control"="user.getId() === object.getId() or is_granted('ROLE_MODERATOR')"}
 *     }
 * )
"post"={"method"="POST", "access_control"="is_granted('IS_AUTHENTICATED_FULLY') === false"}