Tenemos un sistema donde los administradores y usuarios estándar son manejados por sus propios proveedores de seguridad independientes. Esto ha causado un problema en las páginas administrativas porque los administradores no pueden acceder a ningún archivo o imagen que se encuentre detrás del firewall del sitio principal, a menos que también hayan iniciado sesión en el sitio principal.Symfony 2: Acceder a una ruta cortafuegos con dos proveedores separados
Las imágenes y archivos deben estar accesibles para todos los usuarios y administradores autenticados, independientemente del proveedor. Se sirven a través de un controlador que proporciona un control de acceso de grano más fino.
¿Es posible definir más de un proveedor para permitir el acceso a una ruta?
Aquí hay una versión simplificada de nuestro security.yml actual:
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:/
Gracias por la respuesta, pudimos configurar el 'ChainProvider' con estas instrucciones (aunque creo que la sintaxis era un poco diferente en nuestra versión de Symfony). Finalmente terminamos abandonando el 'AdminUser' y usando roles en su lugar, como sugiere @jperovic, ya que nos dimos cuenta de que los proveedores independientes no son realmente necesarios en nuestro escenario. – Kaivosukeltaja