私は FOSUserBundle を使用しており、ROLE_A と ROLE_B の 2 つのロールがあります。ROLE_A を /admin などの特定の領域に制限したい:
access_control:
- { path: ^/test/, roles: ['ROLE_B', 'IS_AUTHENTICATED_ANONYMOUSLY'] }
- { path: ^/admin/, role: ROLE_A }
この access_control を使用すると、ROLE_A のみが /admin にアクセスできますが、ユーザーが ROLE_A として接続されている場合、/test の表示を許可したくありません。各コントローラーに次のようなものを使用できます。
public function testAction()
{
if (true === $this->get('security.context')->isGranted('ROLE_A')) {
throw new AccessDeniedException();
}
// ...
}
しかし、多くのコントローラーでは、これは良い考えではないと思います... 複数のファイアウォールまたは ACL を使用する必要がありますか? 必要性を感じないから…