2012-08-27 10 views
5

Ich habe einfach Login-Seite und Sicherheit wie folgt aufgebaut:Asse Dateien in Symfony sind hinter der 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 } 

Und in meiner base.html.twig Datei habe ich

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

und jene Datei einschließlich funktioniert nur, wenn ich autorisiert bin in App. Nach der Anmeldung findet das System dieses Asset, aber vorher nicht, und wenn ich dem generierten Link von assetic folge, werde ich zur Login-Seite weitergeleitet.

In Ansicht sieht der Link wie folgt:

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

Diese Datei existin auf Laufwerk, und wenn, wenn zeigt korrekte CSS angemeldet aufgerufen, wenn nicht angemeldet es mir Umleitungen Seite einzuloggen.

Antwort

5

Das ist normal. Sie sagen, dass sich alles unter dem Root-Verzeichnis (Muster:^/) hinter der Haupt-Firewall befindet und dass Sie für den Zugriff auf diese Dateien ein Administrator sein müssen (Pfad:^/, role: ROLE_ADMIN). Sie müssen also eine andere Regel zu setzen und zu sagen, dass die CSS-Verzeichnis anonym zugegriffen werden kann:

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

Ich wette, das ist die Lösung . –

+1

Dies ist eine lahme Lösung. Verwenden Sie die in einer anderen Antwort vorgeschlagene 'dev'-Firewall. –

+0

Das ist falsch, die wirkliche Lösung für das Problem ist wie in Bartosz Rychlicki Antwort – loostro

17

Auch habe ich festgestellt, dass diese, wenn zu security.yml hinzugefügt hilft:

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

Sie sollten es nicht von "security.yml" in erster Linie entfernt haben. : P –

+1

Hinweis: Der Dev-Abschnitt unter Firewalls muss sich vor dem Hauptabschnitt befinden, oder wie auch immer Sie den Abschnitt zur Sicherheit benannt haben – Populus