多个项目操作 is_granted 不工作 - api 平台
item operations multiple is_granted not working - api platform
我试图通过允许 3 个角色来保护我对实体的 post 操作。 ROLE_ADMIN、ROLE_USER 和 ROLE_LEADER。每个用户只有一个角色。
当我通过从下面的代码中删除 ROLE_LEADER 来测试它是否有效时,我发现具有 ROLE_LEADER 的用户仍然可以创建用户。
如果发生了变化,我试图犯一些错误,他们是。
我有以下操作:
/**
* @ORM\Entity(repositoryClass="App\Repository\UserRepository")
* @ApiResource(
* itemOperations={
* "post"={"access_control"="is_granted('ROLE_ADMIN') or is_granted('ROLE_USER')", "access_control_message"="You are not owner of this user."},
* "delete"={"access_control"="
is_granted('ROLE_ADMIN')
or (is_granted('ROLE_USER') and (previous_object.getOwner() == user or previous_object.getOwner().getOwner() == user))
or (is_granted('ROLE_LEADER') and previous_object.getOwner() == user)
", "access_control_message"="You are not owner of this user."},
* },
* )
*/
删除操作按预期进行,但是我无法理解为什么当我 post 从具有 ROLE_LEADER.
的用户获取数据时仍然可以创建用户
感谢您的宝贵时间
每个登录的用户始终至少具有角色 ROLE_USER
。有关详细信息,请参阅 documentation。
因此 is_granted('ROLE_ADMIN') or is_granted('ROLE_USER')
意味着任何登录用户都被授予访问权限(因为 or is_granted('ROLE_USER')
),这也是为什么您的 ROLE_LEADER
用户仍然可以 post 数据(因为此用户 也 具有角色 ROLE_USER
)。
一种解决方案是创建另一个用户角色并改用该用户角色。
解决办法是我需要搬家
"post"={"access_control"="is_granted('ROLE_ADMIN') or is_granted('ROLE_USER')", "access_control_message"="You are not owner of this user."},
从 itemOperations 到 collectionOperations
我试图通过允许 3 个角色来保护我对实体的 post 操作。 ROLE_ADMIN、ROLE_USER 和 ROLE_LEADER。每个用户只有一个角色。
当我通过从下面的代码中删除 ROLE_LEADER 来测试它是否有效时,我发现具有 ROLE_LEADER 的用户仍然可以创建用户。
如果发生了变化,我试图犯一些错误,他们是。
我有以下操作:
/**
* @ORM\Entity(repositoryClass="App\Repository\UserRepository")
* @ApiResource(
* itemOperations={
* "post"={"access_control"="is_granted('ROLE_ADMIN') or is_granted('ROLE_USER')", "access_control_message"="You are not owner of this user."},
* "delete"={"access_control"="
is_granted('ROLE_ADMIN')
or (is_granted('ROLE_USER') and (previous_object.getOwner() == user or previous_object.getOwner().getOwner() == user))
or (is_granted('ROLE_LEADER') and previous_object.getOwner() == user)
", "access_control_message"="You are not owner of this user."},
* },
* )
*/
删除操作按预期进行,但是我无法理解为什么当我 post 从具有 ROLE_LEADER.
的用户获取数据时仍然可以创建用户感谢您的宝贵时间
每个登录的用户始终至少具有角色 ROLE_USER
。有关详细信息,请参阅 documentation。
因此 is_granted('ROLE_ADMIN') or is_granted('ROLE_USER')
意味着任何登录用户都被授予访问权限(因为 or is_granted('ROLE_USER')
),这也是为什么您的 ROLE_LEADER
用户仍然可以 post 数据(因为此用户 也 具有角色 ROLE_USER
)。
一种解决方案是创建另一个用户角色并改用该用户角色。
解决办法是我需要搬家
"post"={"access_control"="is_granted('ROLE_ADMIN') or is_granted('ROLE_USER')", "access_control_message"="You are not owner of this user."},
从 itemOperations 到 collectionOperations