2012-08-27 7 views
5

tengo la página de inicio de sesión simple y seguridad constituidas como esto:¿Los archivos activos en Symfony están detrás del firewall?

firewalls: 
    main: 
     pattern: ^/ 
     form_login: 
      provider: fos_userbundle 
      csrf_provider: form.csrf_provider 
      use_referer: true 
      always_use_default_target_path: true 
      default_target_path:/
     logout:  true 
     anonymous: true 

access_control: 
    - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY } 
    - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY } 
    - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY } 
    - { path: ^/, role: ROLE_ADMIN } 

Y en mi archivo base.html.twig tengo

{% stylesheets '@BrStgCcBundle/Resources/public/css/bootstrap.css' %} 
    <link rel="stylesheet" href="{{ asset_url }}" /> 
{% endstylesheets %} 

Y incluidos los archivos sólo funciona si yo estoy autorizada en la aplicación. Entonces, después de iniciar sesión, el sistema encuentra este activo, pero antes no, y cuando sigo el enlace generado por assetic, me redirigen a la página de inicio de sesión.

Teniendo en cuenta el vínculo se parece a esto: existin

<link rel="stylesheet" href="/app_dev.php/css/026adfc_bootstrap_1.css" /> 

Este archivo en la unidad, y cuando se le llama cuando se inicia sesión muestra CSS adecuada cuando no se ha identificado que me redirige a la página de acceso.

Respuesta

5

Esto es normal. Usted está diciendo que todo bajo el directorio raíz (patrón:^/) está detrás del servidor de seguridad principal y que para acceder a estos archivos debe ser administrador (ruta:^/, función: ROLE_ADMIN). Así que hay que establecer otra regla y decir que el directorio css se puede acceder de manera anónima:

- { path: ^/css, role: IS_AUTHENTICATED_ANONYMOUSLY } 
+0

apuesto esta es la solución . –

+1

Esta es una solución débil. Use el firewall 'dev' sugerido en otra respuesta. –

+0

Esto está mal, la verdadera solución al problema es como en la respuesta de Bartosz Rychlicki – loostro

17

También he encontrado que esto ayuda si se añade a security.yml:

firewalls: 
    dev: 
     pattern: ^/(_profiler|_wdt|css|js|assets) 
     security: false 
+0

. No debería haberlo eliminado de 'security.yml' en primer lugar. : P –

+1

Nota: la sección de desarrollo bajo firewalls debe estar antes de la sección principal o lo que sea que haya llamado la sección de seguridad – Populus

Cuestiones relacionadas