2016-05-13 7 views
0

私のプロジェクトにFOSUserBundleを実装しようとしています。 私はちょうどGroup機能をセットアップし、グループを作成して、ユーザーを追加しました。 本当に私を混乱させるのは、ユーザーが期待したようにグループの役割を継承しないということです。私の期待は、ユーザーが例えばロールROLE_ADMINというロールを持つグループを持っている場合、そのユーザーもそのロールを持つということです。 だから、Symfony FOSUserBundleグループ目的

if (!$this->get('security.authorization_checker')->isGranted('ROLE_ADMIN')) { 
     throw $this->createAccessDeniedException(); 
    } 

のようなものが例外をスローしないだろうが、それはドキュメントがグループの

役割は、それに属するすべてのユーザーに付与されますここで言う矛盾するように私には を行います。

私の質問は、どのようにグループを正しい方法で使うのですか? 少なくとも1つのグループにすべてのユーザーを収容し、そのユーザーに割り当てられた役割を確認するのではなく、役割を確認することはできますか?

答えて

1
  • サービスsecurity.contextは、上記の変更とともに廃止されました。推奨 代わりに使用する: @security.authorization_checker => isGranted() @security.token_storage => getToken() @security.token_storage => setToken()

だから:symfonyのコンポーネントへ

if($this->isGranted('ROLE_ADMIN')) 

Referre:

protected function isGranted($attributes, $object = null) 
    { 
     if (!$this->container->has('security.authorization_checker')) { 
      throw new \LogicException('The SecurityBundle is not registered in your application.'); 
     } 

     return $this->container->get('security.authorization_checker')->isGranted($attributes, $object); 
    } 
+0

ありがとうございます!私はこれをテストしている間に間違いを犯しました。私はログアウトせずに戻ってこなかったので、プロファイラで私のユーザに割り当てられているロールがないことが示されました。さて、それは完全に動作します – Kable

関連する問題