2017-03-28 19 views
0

の方法受信ROLEと要求をサポート代わりに属性と実体投票者は、このコントローラを除いて...私の全体のアプリ上で動作するようです:symfonyの投票者が

この投票方法が間違った引数を受信して​​いる
$entity = $em->getReference('AppBundle:Offer',$id); 
$this->denyAccessUnlessGranted('overview', $entity); 

... 。

サポート($属性、$件名)

dump($attribute)-> ROLE_USER // instead 'overview' 
dump($subject)-> Request Object // instead $entity 

投票者の設定は次のとおりです。

app_voter: 
    class:  AppBundle\Security\Authorization\AppVoter 
    public:  true 
    strategy: affirmative 
    arguments: ['@role_hierarchy', '@security.token_storage'] 
    tags: 
     - { name: security.voter } 

代わりに '概要'をコントローラコードに書き込むと、問題は消えます。

+3

支援方法は、実際にvoteOnAttributeが呼び出されるまで終了するかを決定するために処理サイクル中に複数回呼び出すことができます。 $ subjectがオファーではない場合、サポートはfalseを返します。 – Cerad

答えて

0

私は「サポート」の方法に「概要」を追加するのを忘れ:

protected function supports($attribute, $subject) { 
     // if the attribute isn't one we support, return false 
     if (!in_array($attribute, array(self::OVERVIEW, self::VIEW, self::EDIT))) { 
      return false; 
     } 

     // bypass if the entity is not supported 
     if (!$this->isSupportedClass($subject)) { 
      return true; 
     } 
     return true; 
    } 
+0

こんにちは、同じ問題がここにあります。 $ subjectはvoteOnAttributeでは有効ですが、サポートではありません。Subjectはリクエストです... isGrentedを呼び出すと、Controllerによってパラメータで受け取られたパラメータ変換オブジェクトを直接与えることができます。おそらくそれはアドバイスです。 – kiedis