2012-08-27 6 views
5

ho semplice pagina di login e di sicurezza previste in questo modo:I file assetici in symfony sono dietro il 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 } 

E nel mio file base.html.twig ho

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

E compresi quelli file funziona solo se io sono autorizzato in app. Quindi, dopo il login, il sistema trova questa risorsa, ma prima non lo fa, e quando seguo il link generato da assetic, sono reindirizzato alla pagina di accesso.

Secondo il collegamento si presenta così:

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

Questo file existin sull'unità, e quando viene chiamato quando si accede mostra una corretta CSS quando non è registrato mi reindirizza alla pagina di login.

risposta

5

Questo è normale. Stai dicendo che tutto sotto la directory principale (pattern:^/) è dietro il firewall principale e che per accedere a questi file devi essere un amministratore (percorso:^/, ruolo: ROLE_ADMIN). Quindi è necessario impostare un'altra regola e dire che la directory CSS può accedere in modo anonimo:

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

Scommetto che questa è la soluzione . –

+1

Questa è una soluzione zoppa. Usa il firewall 'dev' suggerito in un'altra risposta. –

+0

Questo è sbagliato, la vera soluzione al problema è come nella risposta di Bartosz Rychlicki – loostro

17

Inoltre ho trovato che questo aiuta, se aggiunto a security.yml:

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

Non dovresti averlo rimosso da 'security.yml' in primo luogo. : P –

+1

Nota: la sezione di dev sotto i firewall deve essere prima della sezione principale o qualunque cosa abbiate chiamato la sezione per la sicurezza – Populus

Problemi correlati