2012-08-27 8 views
5

私はこのようなセットアップ、簡単なログインページとセキュリティがあります。symfonyのAsseticファイルはファイアウォールの後ろにありますか?

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 } 

をそして、私のbase.html.twigファイルで、私は

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

を持っており、それらのファイルを含め、私が許可していた場合にのみ機能しますアプリ内だからログイン後、システムはこのアセットを見つけますが、そうでない前に、私がasseticによって生成されたリンクに従うと、私はログインページにリダイレクトされます。ドライブに

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

このファイルexistinをし、ログインしたときに呼び出されたとき、それはログインページに私をリダイレクトログインしていない、適切なCSSを示しています

は、ビューでは、リンクは次のようになります。

答えて

5

これは正常です。ルートディレクトリ(パターン:^ /)の下のすべてがメインファイアウォールの背後にあり、これらのファイルにアクセスするには管理者(パス:^ /、役割:ROLE_ADMIN)である必要があります。だから、あなたは別のルールを設定する必要があり、CSSディレクトリが匿名でアクセスできることを言う:私はsecurity.ymlに追加された場合、これが役立つことがわかりました

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

私はこれが解決策である賭けます。 –

+1

これは不毛の解決策です。別の答えで示唆されている 'dev'ファイアウォールを使用してください。 –

+0

これは間違っています。問題の本当の解決策は、Bartosz Rychlickiの回答 – loostro

17

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

と同じです。最初は 'security.yml'から削除してはいけません。 :P –

+1

注:ファイアウォールの下のdevセクションは、メインセクションの前にある必要があります。 – Populus

関連する問題