管理者と標準ユーザーがそれぞれ別のセキュリティ プロバイダーによって処理されるシステムがあります。管理者は、メイン サイトにもサインインしていない限り、メイン サイトのファイアウォールの背後にあるファイルや画像にアクセスできないため、これにより管理ページで問題が発生しました。
イメージとファイルは、プロバイダーに関係なく、認証されたすべてのユーザーと管理者がアクセスできる必要があります。それらは、よりきめ細かいアクセス制御を提供するコントローラーを通じて提供されます。
ルートへのアクセスを許可するために複数のプロバイダーを定義することは可能ですか?
以下は、現在の security.yml を簡略化したバージョンです。
security:
providers:
admin_user_db:
entity: { class: OurAdminUserBundle:AdminUser, property: username }
site_user_db:
entity: { class: OurSiteUserBundle:SiteUser, property: username }
firewalls:
admin_login:
pattern: ^/admin/login$
security: false
site_user_login:
pattern: ^/login
security: false
file_route:
pattern: ^/file
anonymous: ~
### We need to allow this route only for authorized users from
### either admin_user_db or site_user_db providers
admin_secured_area:
pattern: ^/admin
http_basic: ~
provider: admin_user_db
form_login:
check_path: /admin/login_check
login_path: /admin/login
logout:
path: /admin/logout
target: /
site_secured_area:
pattern: .*
http_basic: ~
provider: site_user_db
form_login:
check_path: /check_login
login_path: /login
failure_path: /login
failure_forward: false
logout:
path: /logout
target: /