2017-08-01 9 views
1

私はコントローラ内で完全に動作している投票者を持っていますが、サービス内で使用しようとすると、 "return false"文がありますが、常にtrueを返します。投票者がsymfony 3.3.4で働いていない

唯一の違いは私がそれを呼び出す方法です。

私はそれをこのように使うコントローラーに

$this->denyAccessUnlessGranted('ver', $menu); 

をし、サービスに私はこのようにそれを呼び出す:

サービスで
$this->authorizationChecker->isGranted('ver', $menu); 

私はAuthorizationCheckerを注入し、それが動作しますが、他の有権者を実行しているようです(私には1つしかありません)。

は、私は、この持っている "のsecurity.yml" では:

access_decision_manager: 
     strategy: unanimous 

投票コード:

protected function voteOnAttribute($attribute, $subject, TokenInterface $token){ 

    $usuario = $token->getUser(); 

    if (!$usuario instanceof Usuarios) { 
     return false; 
    } 

    /** @var Menu $menu */ 
    $menu = $subject; 


    switch ($attribute) { 
     case self::VER: 
      return false; 
     case self::EDITAR: 
      return false; 
     case self::IMPRIMIR: 
      return false; 
    } 

    throw new \LogicException('This code should not be reached!'); 
} 

を誰もが、私を助けてくださいことはできますか?

+0

このリリースで問題が発生しました。3.3.5にアップグレードしようとしましたか? – COil

+0

私はちょうどアップグレードする(新しいバージョンがあったか分からない)問題は持続する:( – Angainor

+0

あなたの有権者が実際に呼ばれていないと推測しているが、なぜ私は見ることができない。あなたの有権者が適切にタグ付けされていると仮定してください。 – Cerad

答えて

1

私は答えを見つけました。

この違い...:

$this->denyAccessUnlessGranted('ver', $menu); 

...これ...:

$this->authorizationChecker->isGranted('ver', $menu); 

は...彼らはその結果についてお知らせ方法です。

最初のステートメントはDenyAccessExceptionをスローしますが、2番目のステートメントはブール値を返します(例外は発生しません)。

私はそのことを認識していなかった:)

はあなたの助けありがとうございました。

0
$this->denyAccessUnlessGranted('ver', $menu); 

$this->authorizationChecker->isGranted('ver', $menu); 

同じ仕事を行います。

サービスとコントローラの両方で$menuの内容を確認してください。

$this->denyAccessUnlessGranted($attributes, $object = null, $message = 'Access Denied.')は、カスタム有権者がVoterInterfaceを実装するか、有権者を作成しても容易になり投票者を拡張する必要が$this->container->get('security.authorization_checker')->isGranted($attributes, $object)

へのショートカットです。あなたは?

公式の文書をチェックして、有権者の適切な実装を確認してください。 https://symfony.com/doc/current/security/voters.html

+0

同じである必要がありますが、同じものを返しません。私の有権者はVoterを拡張し、コントローラ内で完璧に動作しますが、サービス内でうまく機能しません。 – Angainor

関連する問題