0

http://blog.jmoz.co.uk/symfony2-fosuserbundle-role-entitiesに似たソリューションを使用しています

したがってRole、実装するエンティティがあり、ロールとの多対多の関係を持つように設定されRoleInterfaceた変更されたエンティティがあります。User

これにより、このようなコードを使用できます

$user = $this->get('security.context')->getToken()->getUser();
$role = new Role('ROLE_TEST');
$user->addRole($role);

$em = $this->getDoctrine()->getEntityManager();
$em->persist($role);
$em->persist($user);
$em->flush();

次に、ユーザーが次のような役割を持っているかどうかを確認できます

$user = $this->get('security.context')->getToken()->getUser();

if($user->hasRole('ROLE_TEST')){
   //do stuff...
}

このソリューションは問題ありませんが、セキュリティコンテキストにアクセスし、次のようなコードを使用する必要があります。

if($this->get('security.context')->isGranted('ROLE_TEST')){
   //do stuff...
}

そして、security.yml cofigファイルで、次のようなaccess_controlコードを使用したいと思います。

access_control:
   - { path: ^/test$, role: ROLE_TEST }

このためにカスタムユーザーマネージャーが必要ですか?データベース内のユーザーに割り当てられているロールは、組み込みのSymfonyセキュリティシステムに引き継がれていません。

言い換えると、プロファイラーのセキュリティセクションを表示すると、ユーザーがに割り当てられていることが示されますがRoles [ROLE_USER]、システムが、次のようなログインユーザーのデータベースに設定した役割も認識できるように取得したいと考えています。ROLE_TEST

4

1 に答える 1