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
。