セキュリティファイアウォールとaccess_controlを構成して、すべてのページが匿名ユーザーに対して限定された情報を表示するようにするには (ログインは強制されないことに注意してください)、認証されたユーザーに対しては完全な詳細を表示するにはどうすればよいですか?
encoders:
Symfony\Component\Security\Core\User\User: plaintext
role_hierarchy:
ROLE_AGENT: ROLE_USER
providers:
agent_provider:
memory:
users:
agent: { password: agentpass, roles: [ 'ROLE_AGENT' ] }
user_provider:
memory:
users:
user: { password: userpass, roles: [ 'ROLE_USER' ] }
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
anonymous: true
agent_area:
provider: agent_provider
pattern: ^/agent
anonymous: ~
form_login:
login_path: agent_login
check_path: agent_login_check
default_target_path: /agent
logout:
path: agent_logout
target: /agent
user_area:
provider: user_provider
pattern: ^/
anonymous: ~
form_login:
login_path: app_login
check_path: app_login_check
default_target_path: /
logout:
path: app_logout
target: /
access_control:
- { path: ^/agent/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/agent, roles: ROLE_AGENT }
- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/, roles: ROLE_USER }
access_controlの最後の 2 行を削除すると、ログイン プロセスは期待どおりに機能しているように見えますが、is_granted('ROLE_USER') は、ユーザーがログインしている場合でも常に false を返します。
- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/, roles: ROLE_USER }