Abbiamo un sistema in cui gli amministratori e gli utenti standard vengono gestiti dai propri fornitori di sicurezza separati. Ciò ha causato un problema nelle pagine amministrative perché gli amministratori non possono accedere a nessun file o immagine che si trova dietro il firewall del sito principale a meno che non siano anche connessi al sito principale.Symfony 2: Accesso a una rotta firewall con due provider separati
Le immagini e i file devono essere accessibili a tutti gli utenti e amministratori autenticati, indipendentemente dal provider. Sono serviti attraverso un controller che fornisce un controllo di accesso a grana più fine.
È possibile definire più di un provider per consentire l'accesso a una rotta?
Ecco una versione ridotta del nostro security.yml corrente:
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:/
Grazie per la risposta, siamo stati in grado di impostare il 'ChainProvider' con queste istruzioni (anche se penso che la sintassi fosse un po 'diversa in la nostra versione di Symfony). Alla fine abbiamo finito con l'abbandonare "AdminUser" e l'utilizzo di ruoli come suggerito da @jperovic, dal momento che ci siamo resi conto che i provider separati non sono realmente necessari nel nostro scenario. – Kaivosukeltaja