1
我已實現了以下選民Symfony的 - 選民總是相同的對象收到
服務定義
security.access.company_voter:
class: Application\...\CompanyVoter
public: false
tags:
- { name: security.voter }
選民應用/.../ CompanyVoter.php
#...
public function vote(TokenInterface $token, $object, array $attributes)
{
if (!($this->supportsClass(get_class($object)))) { # <- Problem here
return VoterInterface::ACCESS_ABSTAIN;
}
foreach ($attributes as $attribute) {
if (!$this->supportsAttribute($attribute)) {
return VoterInterface::ACCESS_ABSTAIN;
}
}
$user = $token->getUser();
if (!($user instanceof UserInterface)) {
return VoterInterface::ACCESS_DENIED;
}
if ($user->getCompany() == $object->getCompany()) {
return VoterInterface::ACCESS_GRANTED;
}
return VoterInterface::ACCESS_ABSTAIN;
}
#...
但對選民的每一個小電話(除ŧ他第一個Symfony\Component\HttpFoundation\Request
)給出Application\...\CompanyVoter
的實例爲$object
(vote()
的第二個參數)。
可能是什麼原因?
HM怎樣的'supportsClass'功能看?你可以添加它嗎?在這裏跟着你的答案......我強烈懷疑你在那裏做了一些奇怪的事情......或者'get_class($ object)'已經返回字符串'... \ CompanyVoter'? – nifr
'get_class($ object)'總是返回'Application \ ... \ CompanyVoter' –