我的API出现问题。我正在使用API平台,但它还很新,所以如果我的问题很傻,请提前抱歉。
在我的API中,我有一个管理员,一个主持人和一些用户。我想要的是只有访客才能为用户创建帐户。因此,管理员,主持人和用户无法创建用户帐户。
这是我的层次结构文件(security.yaml):
role_hierarchy:
ROLE_MODERATOR: ROLE_USER
ROLE_ADMIN: ROLE_MODERATOR
这是我的实体用户的@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')"}
* }
* )
这是我的access_control(security.yaml):
access_control:
- { path: ^/users, role: IS_AUTHENTICATED_ANONYMOUSLY, methods: [POST] }
方案::我正在尝试创建一个访问者/用户/主持人/管理员的用户帐户
我的错误:主持人,管理员和用户可以创建用户帐户
预期结果:只有访问者可以创建用户帐户
我尝试过的方法:
我将此添加到我的实体中
"post"={"method"="POST", "access_control"="user is null"}
它不允许角色创建用户帐户(为他们提供403禁止访问权限,这是我想要的),但是现在尝试创建一个访客身份时,我找不到401 JWT令牌。
您有什么解决方案可以帮助我吗?预先感谢
答案 0 :(得分:2)
通过将其放入我的实体用户的collectionOperations
中来解决:
"post"={"method"="POST", "access_control"="is_granted('IS_AUTHENTICATED_FULLY') === false"}