【发布时间】:2021-04-12 08:35:08
【问题描述】:
我正在使用 ApiPlatform 制作 CheeseListing RESTful API。
我为我的 CheeseListing 对象创建了一个投票者:
class CheeseListingVoter extends Voter
{
...
protected function voteOnAttribute($attribute, $subject, TokenInterface $token)
{
$user = $token->getUser();
// if the user is anonymous, do not grant access
if (!$user instanceof UserInterface) {
return false;
}
/** $var CheeseListing $subject */
// ... (check conditions and return true to grant permission) ...
switch ($attribute) {
case 'EDIT':
if($subject->getOwner() === $user){
return true;
}
...
当$token->getUser() 是一个对象而$subject->getOwner() 是一个Iri "/api/users/1" 时,为什么$subject->getOwner() === $user 会返回true
【问题讨论】:
-
我要问一些愚蠢的问题:$subject->getOwner() 是一个 uri 听起来很意外,你确定吗?我的意思是,如果它确实是真的,那么人们会期望两者都是对象或两者都是 uri 或 bot 为空。呜呜……你怎么知道的?
标签: symfony entity api-platform.com symfony4-voter